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

问题描述 投票:23回答:2

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

gradle test --info

但在这种情况下,第三方库的大量不需要的输出也是如此。

Documentation建议使用logging.caputureStandardError / logging.caputureStandardError (loglevel),但它似乎没有任何影响。

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

然后,如果运行gradle test,则不在控制台中输出STDERR / STDOUT。

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

testing gradle stdout stderr
2个回答
44
投票

将这些行添加到build.gradle

apply plugin: 'java'

test {
    dependsOn cleanTest
    testLogging.showStandardStreams = true
}

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


编辑:

更好的方法:

apply plugin: 'java'

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

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

有关更多信息和选项,请参阅the documentation


1
投票

对于那些使用kotlin / kotlin dsl进行gradle的人,需要在build.grade.kts文件中添加以下内容:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.