11.3 即使某些测试失败,使Maven依旧运行所有测试 | Java Debug 笔记

236 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>

**提问:即使某些测试失败,使Maven依旧运行所有测试 **

我有一个包含多个模块的项目。 当所有测试通过时,Maven测试将全部运行。

当第一个模块中的测试失败时,maven将不会继续进行下一个项目。 我在Surefire设置中将testFailureIgnore设置为true,但这无济于事。

我如何使maven运行所有测试,而不管先前的失败是什么,先前是否失败?

回答1:

尝试在根项目的pom.xml中为surefire插件添加以下配置:


<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

回答2:

从Maven Embedder文档中:

-fae,-fail-at-end 允许所有未受影响的构建继续,仅仅在已经失败后使用,比如ABCD,D依赖于C,由于C失败,此时运行该命令,程序会构建AB

-fn,-fail-never永远不会使构建失败,无论项目结果如何

综上所述,如果您要测试一个模块,那么使用-fae是安全的。

否则,如果您有多个模块,并且要对所有模块进行测试(甚至依赖于失败的测试模块的模块),则应运行mvn clean install -fn。 -fae将继续进行测试失败的模块(将运行所有其他测试),但是将忽略所有依赖于该模块的模块。