当JUnit测试失败时,在Jenkins中将Gradle构建标记为不稳定

25

我在Jenkins中有一个使用Gradle构建的项目,其中包含各种JUnit测试用例作为构建的一部分执行。当其中一些测试用例失败时,整个构建将标记为失败 - 因为Gradle报告了构建失败。

如何说服Gradle成功构建,并让Jenkins将构建标记为不稳定?使用Ant则没有任何问题。

4个回答

25

这个能否只通过命令行配置 Jenkins?因为使用此选项,失败的构建会被记录为成功。 - MariuszS
3
良好的构建成功了,但 Jenkins 显示该构建为“成功”而不是“不稳定” :-/。有没有什么好的解决方案?Jenkins 的一些插件或其他东西可以解决吗? - bugs_
1
解决方法是使用这个。并且从这个答案 https://dev59.com/T2sz5IYBdhLWcg3wCDl2 中找到一些相关的内容,我使用了“Text-finder”插件。 - bugs_

4
您可以使用外部属性来解决这个问题。
if (!ext.has('ignoreTestFailures')) {
  ext.ignoreTestFailures = false
}

test {
  ignoreFailures = project.ext.ignoreTestFailures
}

在这种设置下,默认情况下失败会使构建失败。但是如果你像这样调用Gradle:gradle -PignoreTestFailures=true test,那么测试失败将不会导致构建失败。因此,您可以配置Jenkins忽略测试失败,但在开发人员手动运行测试时让构建失败。


2
你可以将以下内容加入到你的主 build.gradle 中,以应用于所有项目和所有测试任务。
allprojects{
    tasks.withType(Test) {
        ignoreFailures=true;
    }
}

0

由于在我的情况下,仅忽略失败的测试是不可行的,因此我发现了以下内容。 如果您正在使用脚本化的Jenkinsfile,则可以将测试阶段包装在try-catch语句中。

try {
 stage('test') {
  sh './gradlew test'
 } 
} catch (e) {
  echo "Test FAILED"
}

这将捕获由Gradle抛出的构建异常,但会将构建标记为不稳定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接