groovy Gradle:如何更改测试结果输出

mrzz3bfm  于 2023-10-15  发布在  其他
关注(0)|答案(2)|浏览(124)

默认情况下,执行gradle test时,输出如下所示:

ExampleSpec > get all examples PASSED

如果我没记错的话,在Gradle的早期,类会将包名放在前面。因此,你会得到一个更类似的结果:

com.company.ExampleSpec > get all examples PASSED

有没有办法更改Gradle记录已完成测试的方式,以显示每个测试的软件包名称?

tktrz96b

tktrz96b1#

我能找到的最接近的是对gradle Test任务的以下更改:

String ANSI_RESET = "\u001B[0m"
String ANSI_RED = "\u001B[31m"
String ANSI_GREEN = "\u001B[32m"
String ANSI_YELLOW = "\u001B[33m"

test {
    useJUnitPlatform()
    testLogging {
        events "failed"
        showExceptions true
        exceptionFormat "full"
    }
    afterTest { TestDescriptor descriptor, TestResult result ->
        if(result.failedTestCount > 0) {
            println "${descriptor.className} > ${descriptor.name} ${ANSI_RED}FAILED${ANSI_RESET}"
        } else if(result.skippedTestCount > 0) {
            println "${descriptor.className} > ${descriptor.name} ${ANSI_YELLOW}SKIPPED${ANSI_RESET}"
        } else {
            println "${descriptor.className} > ${descriptor.name} ${ANSI_GREEN}PASSED${ANSI_RESET}"
        }
    }
}

在测试失败的情况下,它会导致一点冗余,但这样它仍然会发出堆栈跟踪来帮助开发人员。

a14dhokn

a14dhokn2#

我已经用https://stackoverflow.com/a/76946372/2145769回答了
您可以通过在TestLogging中设置displayGranularity并启用相关事件的日志记录来控制细节。
要记录的事件的显示粒度。例如,如果设置为0,则方法级事件将显示为“TestRun> TestWorker x > org.SomeClass> org.someMethod”。如果设置为2,则同一事件将显示为“org.someClass > org.someMethod”。

tasks.test {
    testLogging {
        events ("passed", "skipped", "failed")
        displayGranularity = 1
    }
}

相关问题