我在 Maven 和 Eclipse 中的测试有问题。
我从 Eclipse 运行我的测试套件并且一切正常,但是当我运行时
mvn test
我有一个异常,当我尝试读取测试用例中的一些文件时出现异常,如下所示:
final File javaFolder = new File("WEB-INF/test/file");
当我这样做时我有一个空指针异常和调试我看到路径是
C:\Users\myUser\AppData\Local\Temp\WEB-INF\test\file
此外,我认为重要的是我覆盖了 pom 中的测试目录,因为我们需要一个特殊位置的测试源。我们是这样做的:
<testSourceDirectory>WEB-INF/test/java</testSourceDirectory>
所以我的问题是:为什么使用 Maven 运行测试没有获得正确的工作目录?我可以定义一个特定的文件夹来读取一些文件吗?我试过像
getClass().getResource("myFile").getFile()
但是当我打印绝对路径时,我又遇到了C:\Users\myUser\AppData\Local...\myFile
编辑:我没有机会遵循惯例,因为我谈论的是一个从未使用过 Maven 的大型系统,因此无法更改所有目录结构。可悲的是,这不是我的意愿。
此外,当我打印“user.dir”时,我有:C:\Users\myUser\AppData\Local\Temp
Edit2:我的项目路径在另一个分区 E:\work\myProject
最佳答案
你试过将它添加到你的 pom.xml 中吗
<testResources>
<testResource>
<directory>${basedir}/src/main/WEB-INF/test/file</directory>
</testResource>
<testResource>
<directory>${basedir}/src/main/WEB-INF/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
将其添加到构建部分,它允许您指定 testResource 文件夹的位置以及测试类所在的位置。考虑检查这个 link还有一个例子here这可以帮助您创建 pom.xml。
记住有资源部分和测试资源部分,你应该修改第二个指向正确的站点。
也可以考虑使用 final File javaFolder = new File("classpath:/WEB-INF/test/file");
关于java - Maven - 覆盖测试资源文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35369269/