将测试文件添加到Netbeans 6.7.1中的Junit测试 - getResource问题,在构建目录中丢失文件

时间:2009-11-10 23:12:07

标签: java netbeans junit netbeans6.7 getresource

我正在使用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来复制我的测试文件。

2 个答案:

答案 0 :(得分:3)

我最近使用NetBeans 6.9.1遇到了这个问题。这是我解决它的方式。

  1. 打开项目 - >属性 - >库
  2. 选择“运行测试”选项卡
  3. 点击添加Jar /文件夹
  4. 导航到您存储资源文件的位置
  5. 添加文件夹
  6. 现在使用这些资源运行测试将起作用。我使用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");