【问题标题】:How to get more junit-failed-details in gradle log without running gradle in debug mode如何在 gradle 日志中获取更多 junit-failed-details 而无需在调试模式下运行 gradle
【发布时间】:2023-12-30 22:54:01
【问题描述】:

问题:

有没有办法将失败的 junit4 测试的详细信息添加到 gradle 输出中,而不会使所有 gradle 更加冗长?

背景:

我有一个 java-se junit4 回归测试,用于处理在我的 win-7-64 本地机器上运行良好的 ical 内容,但是 使用 gradle 在 travis-ci buildserver 上失败。

当我跑步时

./gradlew assemble libIcsJ2se:test

travis-ci 日志的 gradle 输出包含这个

* What went wrong:

Execution failed for task ':libIcsJ2se:test'.

> There were failing tests. See the report at: 
> file:///home/travis/build/k3b/CalendarIcsAdapter/libIcsJ2se/build/reports/tests/index.html

但是我无法访问此文件,因为它位于构建服务器上,所以我无法找出测试失败的原因以及原因。

当我在调试模式下运行 gradle 时

./gradlew -d assemble libIcsJ2se:test

我在日志中看到了我想要的:

07:06:56.713 [DEBUG] [TestEventLogger] de.k3b.calendar.DtoIcRegressonsTests > shouldBeSameFixThisEvent STARTED
07:06:56.713 [DEBUG] [TestEventLogger] 
07:06:56.713 [DEBUG] [TestEventLogger] de.k3b.calendar.DtoIcRegressonsTests > shouldBeSameFixThisEvent FAILED
07:06:56.714 [DEBUG] [TestEventLogger]     org.junit.ComparisonFailure: expected:

<...
TART:20000502T123456
[DTEND:20000502T171234]
SUMMARY:test title
...> but was:<...
TART:20000502T123456[Z
DTEND:20000502T171234Z]
SUMMARY:test title
...>
07:06:56.717 [DEBUG] [TestEventLogger]         at de.k3b.calendar.DtoIcRegressonsTests.shouldBeSameFixThisEvent(DtoIcRegressonsTests.java:482)

但是 gradle 调试输出包含更多与 junit-tests 无关的细节。

有没有办法只将失败的 junit4 测试的详细信息添加到 gradle 输出中,而不会使所有 gradle 更加冗长?

【问题讨论】:

    标签: logging gradle junit reporting travis-ci


    【解决方案1】:

    请阅读documentation of TestLoggingContainer 了解如何配置运行测试时记录的内容。

    【讨论】:

    • 我遇到了与 OP 类似的问题,并且在文档中没有找到关于如何“仅将失败的 junit4 测试的详细信息添加到 gradle 输出而不使所有 gradle 更加冗长”的良好解释。
    【解决方案2】:

    showStandardStreams 设置为true。 我在 gradle 吞下大量测试细节时遇到了类似的问题,例如 WebClient 和 Selenium

    JUnit5 的示例工作配置将是:

    test {
        useJUnitPlatform()
        testLogging {
            showStandardStreams = true
        }
    }
    

    【讨论】:

      最近更新 更多