[英]Gradle test - print stdout/stderror for failed tests
我正在将 Github 操作管道引入现有项目以运行./gradlew test
。 不出所料,由于时区不匹配等各种原因,我遇到了测试在本地通过但没有在构建机器上通过的情况。
默认情况下,gradle 不会打印这些测试的stdout
。 我知道如果通过--info
它将这样做,但是测试套件的大小约为 1500 个测试,这使得管道 output 非常冗长(如果我为完整套件打开它并尝试在 Github 中查看生成的 output)。
为了解决最初的初期问题,我还采用了针对失败的套件(例如./gradlew test --tests "foo.bar.AppTest" --info
)。 不过,这有点小题大做。 有没有办法告诉 gradle 仅为失败的测试打印标准输出内容? 这将使我在一个更好的 position 前进!
此页面包含您要查找的内容。
它归结为像这样配置测试任务:
test {
testLogging {
// set options for log level LIFECYCLE
events "failed"
}
}
如果您阅读该页面,还有更多选项可以精细控制日志记录。
由于您可能只需要 github 操作,因此您可以使用CI
环境变量仅在 CI 环境中启用您的配置:
test {
doFirst {
if (System.getenv('CI')) {
testLogging {
// set options for log level LIFECYCLE
events "failed"
}
}
}
}
正如在处理多模块 android 应用程序时在此相关答案中提到的,可以使用以下内容(root build.gradle
)
// Call from root build.gradle
setupTestLogging()
fun Project.setupTestLogging() {
for (sub in subprojects) {
sub.tasks.withType<Test> {
testLogging {
exceptionFormat = TestExceptionFormat.FULL
}
}
}
}
(请注意,虽然exceptionFormat
本身就足以获得想要的结果,但上面提到的events("standardOut"...)
可以以相同的方式指定)。
对于单模块 android 项目,相同的解决方案将通过删除在子模块上迭代的部分来工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.