如何让Maven使用测试资源

14

当我使用命令:mvn test时,Maven使用的是src/main/resources中的主要资源而不是src/test/resources中的测试资源。

我该如何让Maven使用测试资源而不是主要资源?

编辑:我使用Classloader来查找我的资源。 Classloader可以从我的src/test/resources目录中找到资源,但它首先在src/main/java中查找资源。

ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream file =loader.getResourceAsStream("resource.xml");
或者我是否可以在运行maven命令时使用任何属性来优先考虑类路径?
编辑2:我已经解决了这个问题,它确实从test/resources加载测试资源,但是我的测试涉及部署Web应用程序(集成测试),当Web应用程序访问资源时,它使用src/main/resources。有没有办法更改类路径的顺序或使其中一个在jetty容器中部署的WAR之前?

2
请勿再次提出相同的问题,而是编辑您现有的问题并添加任何相关更新,这将使您的问题重新获得关注。谢谢。 - Kev
2个回答

6
请检查您的target/test-classes目录下是否有resource.xml文件。如果您找到了这个文件,我认为问题可能出在文件名上。尝试将文件重命名为例如test-resource.xml。如果在test-classes目录中找不到该文件,则应在maven pom.xml中配置资源管理。使用maven-resouce-plugin。希望这可以帮助您。

4

你不能给它另一个名字吗?
加载程序不知道你的resource.xmlsrc/main/resources还是src/test/resources,它只是一个查找路径。我认为问题不在于Maven,这就是加载程序的工作原理。你希望从Maven中在测试阶段丢弃所有src/main/resources中的类/资源吗?


不知道。也许你可以配置Surefire或在测试类中手动加载资源。 - Cosmin Cosmin
1
我已经解决了问题。它确实从test/resources加载测试,但是我的测试涉及部署Web应用程序(集成测试),当Web应用程序访问资源时,它使用src/main/resources路径。有没有一种方法可以更改类路径的顺序或使一个路径在Jetty容器中部署的WAR中优先于另一个路径?我会更新我的问题。 - Sujen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接