我在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
答案 0 :(得分:4)
您是否已尝试将此添加到您的pom.xml
sqlite3.connect
将其添加到构建部分,它允许您指定testResource文件夹的位置以及测试类的位置。请考虑检查此link,有一个示例here可以帮助您创建pom.xml。
记住有资源部分和testResource部分,你应该修改指向正确网站的第二部分。
另请考虑使用 <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>
答案 1 :(得分:0)
maven的基本原则是约定优于配置。你可能想问一个诚实的问题,为什么你必须打破完善的惯例。
你有没有尝试&#34; src / main / webapp / WEB-INF / test / file&#34;
更新: 我认为您应该在测试用例中记录System.getProperty(&#34; user.dir&#34;),并确保该文件与打印目录相关。
答案 2 :(得分:0)
我认为您的资源目录也不同。 因此,请确保已设置资源目录(不仅是源目录)并使用getResourcesAsStream加载文件