java - Maven - 覆盖测试资源文件夹

标签 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

最佳答案

你试过将它添加到你的 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/

相关文章:

java - Eclipse 上 java 中的 @Subscribe 和 @Produce 关键字

java - Maven 资源插件依赖

maven - 如何强制maven更新?

java - Spring Boot和Hibernate : for org. springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor

java - 什么是compileSdkVersion?

java - Activity 变灰并有两个按钮可供选择

java - 使用 Java 为现有模型制作动画?

java - 扩展 AbstractStringBuilder 并在哈希表中使用子类时出现问题

java - 双重转义 XML 实体

java - 我应该播种 SecureRandom 吗?