首页 > 解决方案 > Gradle 测试 - 为失败的测试打印标准输出/标准错误

问题描述

我正在向现有项目引入一个 Github 操作管道以运行./gradlew test. 不出所料,由于时区不匹配等各种原因,我遇到了测试在本地通过但没有在构建机器上通过的情况。

默认情况下,gradle 不会stdout为这些测试打印 。我知道如果通过它会这样做--info,但是测试套件的大小约为 1500 个测试,这使得管道输出非常冗长(如果我为整个套件打开它并尝试查看结果,它实际上会使我的浏览器滞后在 Github 中输出)。

为了解决最初的初期问题,我还采用了针对失败的套件(例如./gradlew test --tests "foo.bar.AppTest" --info)。不过,这有点小题大做。有没有办法告诉 gradle 只为失败的测试打印标准输出内容?这将使我在未来处于更好的位置!

标签: javatestinggradlegradlew

解决方案


此页面包含您要查找的内容。

它归结为像这样配置测试任务:

test {
  testLogging {
    // set options for log level LIFECYCLE
    events "failed"
  }
}

如果您阅读该页面,还有更多选项可以精细控制日志记录。


由于您可能只需要它来执行 github 操作,因此您可以使用CI环境变量仅在 CI 环境中启用您的配置:

test {
  doFirst {
    if (System.getenv('CI')) {
      testLogging {
        // set options for log level LIFECYCLE
        events "failed"
      }
    }
  }
}

其他 CI 提供者也设置了这个环境变量


推荐阅读