Gradle:如何将测试 STDERR/STDOUT 的输出输出到控制台?

Gradle: How to get output from test STDERR/STDOUT into console?

(Gradle 3.2.1) 我 运行 一些 java 测试,在 Stderr/Stdout 中记录输出。我可以看到输出,如果我开始

gradle test --info

但在那种情况下,第 3 方库的许多不需要的输出也在那里。

Documentation建议使用logging.caputureStandardError / logging.caputureStandardError (loglevel),但好像没什么效果。

tasks.withType(Test) {
   logging.captureStandardOutput LogLevel.QUIET
   logging.captureStandardError LogLevel.QUIET
}

那么如果运行宁gradle test,控制台输出的不是STDERR/STDOUT

如何在控制台中只获取测试 类 的输出?

将这些行添加到 build.gradle :

apply plugin: 'java'

test {
    dependsOn cleanTest
    testLogging.showStandardStreams = true
}

注意:dependsOn cleanTest不是必需的,但是如果不使用,则需要运行cleanTestclean 任务在 test 任务之前。


编辑:

更好的方法:

apply plugin: 'java'

test {
    testLogging {
        outputs.upToDateWhen {false}
        showStandardStreams = true
    }
}

注意:outputs.upToDateWhen {false}不是必需的,但如果不用,则需要运行cleanTestclean 任务在 test 任务之前。

有关详细信息和选项,请参阅 the documentation

对于那些为 Gradle 使用 Kotlin/Kotlin DSL 的用户,您需要将以下内容放入 build.gradle.kts 文件中:

tasks.withType<Test> {
    this.testLogging {
        this.showStandardStreams = true
    }
}

另外如另一个答案中所述,您需要 运行 gradle clean test 才能每次打印输出。