使用JUnit同时使用Eclipse和Maven的类路径问题

Ste*_*eve 12 java eclipse junit maven-2

在JUnit测试中,我使用此代码加载特定于测试的配置文件:

InputStream configFile = getClass().getResourceAsStream("config.xml");
Run Code Online (Sandbox Code Playgroud)

当我通过eclipse运行测试时,它需要xml文件与测试文件位于同一目录中.

当我使用maven构建项目时,它需要xml src/test/resources,因此它被复制到target/test-classes.

如何让它们只用一个文件?

Nat*_*ate 16

将config.xml文件放在src/test/resources中,并将src/test/resources添加为Eclipse中的源文件夹.

另一个问题是如何getResourceAsStream("config.xml")使用包.如果调用它的类在com.mycompany.whatever包中,那么getResourceAsStream也期望config.xml在同一路径中.但是,这与路径中的路径不同,不是文件系统.您可以将文件放在src/test/resources下的相同目录结构中 - src/test/resources/com/mycompany/whatever/config.xml - 或者您可以在路径中添加前导"/" - 这使得getResourceAsStream加载来自类路径基础的文件 - 所以如果你把它改成getResourceAsStream("/config.xml")你可以把文件放在src/test/resources/config.xml中