Gradle 测试 - 为失败的测试打印 stdout/stderror

Gradle test - print stdout/stderror for failed tests

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

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

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

This page 包含您要查找的内容。

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

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

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


由于您可能只需要在 github 操作中使用它,您可以使用 CI environmental variable 仅在 CI 环境中启用您的配置:

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

Other CI providers也设置这个环境变量