JUnit测试失败时,Mark Gradle在Jenkins中构建不稳定

JUnit测试失败时,Mark Gradle在Jenkins中构建不稳定,junit,jenkins,gradle,Junit,Jenkins,Gradle,我在Jenkins中有一个Gradle构建,其中包含作为构建的一部分执行的各种JUnit测试。现在,当一些测试失败时,整个构建被标记为失败——因为Gradle说构建失败了 我如何说服Gradle成功构建,然后Jenkins将构建标记为不稳定?对于ant,这一点都没有问题。使用 您可以将其包含在main build.gradle中,以应用于所有项目和所有测试任务 allprojects{ tasks.withType(Test) { ignoreFailures=true;

我在Jenkins中有一个Gradle构建,其中包含作为构建的一部分执行的各种JUnit测试。现在,当一些测试失败时,整个构建被标记为失败——因为Gradle说构建失败了

我如何说服Gradle成功构建,然后Jenkins将构建标记为不稳定?对于ant,这一点都没有问题。

使用


您可以将其包含在main build.gradle中,以应用于所有项目和所有测试任务

allprojects{
    tasks.withType(Test) {
        ignoreFailures=true;
    }
}

您可以使用外部属性来解决此问题

if (!ext.has('ignoreTestFailures')) {
  ext.ignoreTestFailures = false
}

test {
  ignoreFailures = project.ext.ignoreTestFailures
}

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

因为在我的案例中不能使用忽略失败的测试,我发现了以下几点。 如果您使用的是脚本文件。可以将测试阶段封装在try-catch语句中

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

这将捕获gradle引发的生成异常,但它将生成标记为不稳定。

是否可以仅从命令行为jenkins配置此异常?因为使用此选项,失败的构建将记录为成功良好的构建成功-但jenkins将构建显示为“成功”,而不是“不稳定”:-/。有人有好的解决办法吗?詹金斯的插件?或者什么好的解决办法就是用这个。从这个答案中,我使用了“文本查找器”插件
try {
 stage('test') {
  sh './gradlew test'
 } 
} catch (e) {
  echo "Test FAILED"
}