【问题标题】:Gradle test - print stdout/stderror for failed testsGradle 测试 - 为失败的测试打印标准输出/标准错误
【发布时间】:2020-05-03 19:49:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: java testing gradle gradlew


    【解决方案1】:

    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"
          }
        }
      }
    }
    

    OtherCIproviders也设置这个环境变量

    【讨论】:

    • 谢谢!我最终选择了以下内容,这至少让 CI 打印出失败的断言(例如,预期 X 为 Y 但为 Z)。 info.events = ["failed", "skipped"] 我通过 IntellIJ 在本地运行测试,所以最后没有选择 'CI' env var 方法,尽管这听起来不错!
    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    相关资源
    最近更新 更多