Maven - 覆盖测试资源文件夹

时间:2016-02-12 17:59:54

标签: java eclipse maven

我在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

3 个答案:

答案 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加载文件