我正在使用NetBeans 6.7.1向我的一个类添加一个Junit测试,我需要能够加载一个特定于测试的xml文件,所以我将它包含在“Test Packages”文件夹中(以及我的实际测试)。我遇到了两个问题,
(1)getResource正在查找错误的目录
(2)当我运行测试时,我的xml测试文件没有被复制(注意,这个功能适用于我将文件添加到“Sources Packages”目录)。
在我的测试课程中:
this.getClass()。的getResource( “/”)
返回:
D:\ UserProfiles \ myName \ My Documents \ NetBeansProjects \ ProjectExample \ build \ classes
我也需要它返回:
D:\ UserProfiles \ myName \ My Documents \ NetBeansProjects \ ProjectExample \ build \ test \ classes
(因为这是编译测试类的地方)
看起来相当hacky调用getResource,获取父级,然后查看test \ classes。这是获取测试文件路径的正确方法吗?也许这是netbeans中的一个错误?
此外,当我右键单击我的testFile并“运行测试”时,只有我的测试类文件被复制到test / classes目录而不是我的xml测试文件。如何告诉Netbeans确保将常规xml文件与类文件一起复制到构建目录。
我还想避免攻击ant build来复制我的测试文件。
答案 0 :(得分:3)
我最近使用NetBeans 6.9.1遇到了这个问题。这是我解决它的方式。
现在使用这些资源运行测试将起作用。我使用NetBeans 6.9.1和一个简单的Java应用程序对此进行了测试。
NetBeans默认在src目录中创建资源文件(默认包),所以我在上面的步骤5中添加了src文件夹。一旦你做了测试,在类路径中查找资源文件就会找到它。
由于NetBeans默认打包在src文件夹中找到的资源,因此您无需复制文件并保持同步。
如果您希望测试资源与生产资源不同,则可以在测试文件夹下的默认包中添加测试资源。然后,不是在上面的步骤4/5中添加src文件夹,而是添加测试文件夹。
答案 1 :(得分:1)
只需将您的文件放在与测试相同的包中,例如,包foo.bar中的data.xml。不需要复制或构建脚本黑客,只需参考如下文件:
getClass().getResource("data.xml");
或者,你可以这样做:
getClass().getResource("/foo/bar/data.xml");