2010-09-16 89 views
5

我正在尝试编写一些Junit测试来测试我们应用中的旧类。代码尝试加载ResourceBundle(用于翻译)但失败。我想问题是类路径相关,但我不明白。在junit测试期间无法加载ResourceBundle

该代码被放置在/ src中,我的测试在/ test中。 ResourceBundles是在给定一个相对于/ src的基名的情况下加载的,比如说“foo/bar/baz”。

我的测试使用与应用程序本身相同的类路径,所以我不明白为什么它不会找到这些包。

有什么想法出了什么问题?

+0

您的测试是否在名为'/ test'的目录下? – Asaph 2010-09-16 13:45:28

+0

如果您临时将ResourceBundles的相对路径更改为绝对路径,问题是否会消失? – Asaph 2010-09-16 13:46:07

回答

6

资源不是从源文件夹解析,而是从类目录中解析。你的资源文件是否被复制到输出文件夹(bin,target/classes等)?如果不是,你的班级找不到它们。

+0

呃!当然,我的测试使用另一个输出目录,而不是应用程序。这是肯定的。 – fiskeben 2010-09-17 06:08:30

5

如果您使用的是maven,您通常希望将所有类型的属性文件和资源包放在一个名为src/main/resources/的独立源文件夹中。

如果你想覆盖单元测试的值,那么你可以添加一个重复的道具。文件在src/test/resources源文件夹中。