-Dmaven.test.failure.ignore = true设置,但是在测试失败时仍然生成错误

G. *_*eam 5 unit-testing maven jenkins

我有两个不同的Freestyle Jenkins作业,如下所示(从作业日志中删除了构建命令):

mvn -Dcloudbees.private.release.repository.off=true -Dcloudbees.private.snapshot.plugin.repository.off=true -Dcloudbees.private.release.plugin.repository.off=true -Dcloudbees.central.repository.off=true -Dcloudbees.private.snapshot.repository.off=true clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true -V -Dcheckstyle.skip=true -Dpmd.skip=true -Dgpg.skip=true -B -e

mvn clean install cobertura:cobertura -DallTests -Dcobertura.report.format=xml -Dmaven.test.failure.ignore=true -V -Dcheckstyle.skip=true -Dpmd.skip=true

他们分别这样结束:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project gora-core: There are test failures.

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test (default-test) on project wildfly-domain-management: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test failed:

我所有的搜索都告诉我-Dmaven.test.failure.ignore=true应该做到这一点,所以我受阻了。

请注意,我没有对这些项目的写权限。我只是在尝试进行编译以准备SonarQube分析。

更新1

我原来有3种工作(而且还在不断增加),并伴有这些症状。作为记录,它们是:

  1. ActiveMQ(先前未列出)
  2. 野蝇核心
  3. 强拉

添加-B到ActiveMQ的工作(其他已经有它)移动它前进到实际编译故障点。不幸的是,这项工作仍然没有成功,所以我不能确定这项工作-B确实得到了解决。

我在本地尝试了Gora,结果与Jenkins相同。

更新2

从那以后<testFailureIgnore>false</testFailureIgnore>,我就在主要的Gora pom中找到了,但是grep告诉我testFailureIgnoreWildfly Core项目中没有。

更新3

Wildfly Core故障显然可以归因于Surefire 2.17中的一个错误。

use*_*849 5

尝试在调试模式 (-X) 下运行 Maven,以查看 Maven 在开始实际运行测试之前认为该属性是什么。如果某人或某物在 POM 中硬编码了该值(例如<testFailureIgnore>false</testFailureIgnore>),那么它可能会忽略您提供的命令行值。

还要确保 Jenkins 作业不是 Maven 作业类型。Stephen Connolly 写了一篇关于为什么Jenkins Maven 作业类型是邪恶的博客文章,他明确提到测试忽略切换是插件在幕后修改的一项。该帖子的评论之一是:

抱歉 testFailureIgnore 是假的,不是跳过是真的...,例如

<configuration> <testFailureIgnore>false</testFailureIgnore> <configuration>

这将确保模块的测试不能被跳过...除非 Maven 作业类型以其自动魔力快速而松散地发挥作用