2009-11-10 60 views
1

我正在使用NetBeans 6.7.1为我的某个类添加Junit测试,我需要能够加载一个特定于测试的xml文件,所以我将它包含在“Test Packages”文件夹中(以及我的实际测试)。我运行到2个问题,将测试文件添加到Netbeans 6.7.1中的Junit测试 - getResource问题,缺少构建目录中的文件

(1)的getResource正在寻找在错误的目录

(2)我的XML测试文件当我运行测试(注意不被复制,此功能可与我将文件添加到“Sources Packages”目录)。

在我的测试类:

this.getClass()的getResource( “/”)

回报:

d:\的UserProfiles \ MYNAME \我的文档\的NetBeansProjects \ ProjectExample \ build \ classes

我也需要它返回:

d:\的UserProfiles \ MYNAME \我的文档\的NetBeansProjects \ ProjectExample \编译\测试\类

(因为这是测试类被编译的地方)

它似乎相当哈克调用的getResource,获取父,然后查看test \ classes。这是获取测试文件路径的正确方法吗?也许这是netbeans中的一个错误?另外,当我右键点击我的testFile和“运行测试”时,只有我的测试类文件被复制到test/classes目录而不是我的xml测试文件。如何让Netbeans确保将常规xml文件和类文件一起复制到构建目录中。

我也想避免黑客蚂蚁构建复制我的测试文件。

+0

好的,问题2通过执行Clean Build来解决。 – vicsz 2009-11-10 23:31:02

+0

尽管每当我运行新的测试时,这些文件都会被删除。 – vicsz 2009-11-10 23:51:58

回答

1

只需将您的文件放在与您的测试相同的软件包中,比如包含在foo.bar中的data.xml即可。没有复制或建立脚本黑客是必要的,只是指这样的文件:

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

或者,你可以这样做:

getClass().getResource("/foo/bar/data.xml"); 
+0

谢谢,但我更喜欢在我执行包之前能够访问这些文件。即,我只是运行测试并将java文件编译为类文件。 – vicsz 2009-11-12 04:45:40

+0

你是什么意思? NetBeans只会编译您的类并运行测试而不创建* .jar,并且您可以像这样引用一个文件。 – candiru 2009-11-12 05:29:17

+0

只需右键单击测试文件,然后选择“测试文件”...只有选定的文件被构建和测试。当我只想运行一个新的(使用TDD)时,我发现这样更有效地重建整个项目。 – vicsz 2009-11-12 23:10:03

3

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

  1. 打开项目 - >属性 - >图书馆
  2. 选择运行的测试选项卡
  3. 点击添加JAR /文件夹
  4. 浏览到您储存的资源文件
  5. 添加的文件夹

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

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

由于NetBeans在默认情况下打包了src文件夹中的资源,因此不需要复制文件并保持同步。

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

相关问题