web-dev-qa-db-ja.com

Gradle:テストSTDERR / STDOUTからコンソールに出力を取得する方法は?

(Gradle 3.2.1)いくつかのJavaテストを実行します。これは、Stderr/Stdoutに出力を記録します。起動すると、その出力を確認できます。

_gradle test --info
_

しかし、その場合、サードパーティのライブラリからの不要な出力の多くもそこにあります。

ドキュメントlogging.caputureStandardError / logging.caputureStandardError (loglevel)の使用を提案していますが、効果はないようです。

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

その後、_gradle test_を実行すると、STDERR/STDOUTではなくコンソールに出力されます。

コンソールのテストクラスから出力だけを取得するにはどうすればよいですか?

28

これらの行をbuild.gradleに追加します。

apply plugin: 'Java'

test {
    dependsOn cleanTest
    testLogging.showStandardStreams = true
}

注意:dependsOn cleanTestは不要ですが、使用しない場合cleanTestを実行する必要がありますまたはcleanタスクの前のtestタスク。


編集:

より良いアプローチ:

apply plugin: 'Java'

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

注意:outputs.upToDateWhen {false}は不要ですが、使用しない場合cleanTestを実行する必要がありますまたはcleanタスクの前のtestタスク。

詳細とオプションについては、 ドキュメント を参照してください。

47
Omid

Gradleにkotlin/kotlin dslを使用している場合は、build.grade.ktsファイルに次を追加する必要があります。

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

また、別の回答で述べたように、出力を毎回印刷するには「gradle clean test」を実行する必要があります。

2
Talha Malik