1

我正在使用 NetBeans 6.7.1 向我的一个类添加一个 Junit 测试,我需要能够加载一个特定于测试的 xml 文件,所以我将它包含在“测试包”文件夹中(连同我的实际测试)。我遇到了2个问题,

(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

(因为那是正在编译测试类的地方)

调用 getResource,获取父级,然后在 test\classes 中查找似乎相当 hacky。这是获取我的测试文件路径的正确方法吗?也许这是netbeans中的一个错误?

此外,当我右键单击我的 testFile 并“运行测试”时,只有我的测试类文件被复制到 test/classes 目录,而不是我的 xml 测试文件。如何告诉 Netbeans 确保将常规 xml 文件与类文件一起复制到构建目录。

我还想避免破解 ant 构建来复制我的测试文件。

4

2 回答 2

4

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

  1. 打开项目->属性->库
  2. 选择运行测试选项卡
  3. 单击添加 Jar/文件夹
  4. 导航到您存储资源文件的位置
  5. 添加文件夹

现在使用这些资源运行测试将起作用。我使用 NetBeans 6.9.1 和一个简单的 Java 应用程序对此进行了测试。

NetBeans 默认在 src 目录下创建资源文件(默认包),所以我在上面的第 5 步中添加了 src 文件夹。一旦你这样做了,在类路径中寻找资源文件的测试就会找到它。

由于 NetBeans 默认打包 src 文件夹中的资源,因此您无需复制文件并保持它们同步。

如果想要测试资源不同于生产资源,可以在test文件夹下的默认包中添加测试资源。然后,不要在上面的步骤 4/5 中添加 src 文件夹,而是添加 test 文件夹。

于 2010-12-31T21:39:30.433 回答
2

只需将文件放在与测试相同的包中,例如,data.xml 在包 foo.bar 中。无需复制或构建脚本黑客,只需像这样引用文件:

getClass().getResource("data.xml");

或者,您可以这样做:

getClass().getResource("/foo/bar/data.xml");
于 2009-11-10T23:58:53.873 回答