如何在Travis CI上阅读测试结果报告?

30

对于我在Travis上的构建,当有测试失败时,我希望能够读取测试结果以查看这些失败测试的堆栈跟踪。目前,这些报告存储在运行测试的机器上的本地文件中,因此我无法访问报告所在的本地文件。

我也不想通过Amazon S3归档这些文件,因为那似乎太麻烦了。

如何从Travis-CI构建获取surefire报告?这样的方法似乎可以解决问题,但也似乎很复杂。

基本上,我想能够在没有经过S3的情况下从Travis读取本地测试结果文件。


你不能以这样的方式运行构建工具,使其在运行测试时输出更多信息吗? - Bart Kiers
那么,像./gradlew test --info这样做,而不仅仅是./gradlew test?我想这可能是一个简单的解决方案,但是在完整报告中,有关失败测试的更多信息可能会更有帮助。 - Caren
我只是想尝试一下 --info--debug 是否能提供足够的信息。如果不行,您可以进一步调整问题。 - Bart Kiers
3个回答

15

2
我认为这是最简单的解决方案,不会像--info或--debug一样污染构建日志。我最终转而使用exceptionFormat "full",因为“short”版本甚至不包含异常消息。 - Martin Vysny

12

补充Rene Groeschke的答案,我发现以下配置对于Travis来说是一个很好的折中方案:

test {
    testLogging {
        events "passed", "skipped", "failed"
        exceptionFormat "full"
    }
}

这将导致类似以下的输出:

com.package.SomeClassTest > testPass PASSED

com.package.SomeClassTest > testSkip SKIPPED

com.package.SomeClassTest > testFail FAILED
    java.lang.AssertionError: expected:<false> but was:<true>
        at org.junit.Assert.fail(Assert.java:88)
        at org.junit.Assert.failNotEquals(Assert.java:834)
        at org.junit.Assert.assertEquals(Assert.java:118)
        at org.junit.Assert.assertEquals(Assert.java:144)
        at com.package.SomeClassTest.testFail(SomeClassTest.java:42)

3 tests completed, 1 failed, 1 skipped

测试报告仍将生成,因此您可以在本地运行测试时进行咨询。


2
尝试在你的命令中添加--info
./gradlew test --info

如果您需要更多内容,请尝试:

./gradlew test --debug

1
看起来尝试这些选项仍然无法输出 Travis 中测试失败的原因,原因不明。 - Caren
嗯,我也遇到过这个问题。我看到了断言信息(即 得到 X,期望 Y)。 - Bart Kiers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接