Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

(Gradle 3.2.1) I run some java tests, which logs output in Stderr/Stdout. I can see that output, if I start

gradle test --info

but in that case, much of unwanted output from 3-rd party libraries is there too.

Documentation suggests using logging.caputureStandardError / logging.caputureStandardError (loglevel), but it doesn't seem to have any effect.

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

Then if running gradle test, not STDERR/STDOUT is output in console.

How can I get just the output from the tests classes in console?

like image 901
Alexei Vinogradov Avatar asked Dec 04 '16 00:12

Alexei Vinogradov


2 Answers

Add these lines to build.gradle :

apply plugin: 'java'

test {
    dependsOn cleanTest
    testLogging.showStandardStreams = true
}

Notice: dependsOn cleanTest is not necessary but if not used, you need to run cleanTest or clean task before test task.


Edit:

A better approach:

apply plugin: 'java'

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

Notice: outputs.upToDateWhen {false} is not necessary but if not used, you need to run cleanTest or clean task before test task.

For more info and options see the documentation.

like image 50
Omid Avatar answered Oct 24 '22 01:10

Omid


For those using Kotlin/Kotlin DSL for Gradle, you need to put the following in your build.gradle.kts file:

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

Also as mentioned in another answer, you will need to run gradle clean test for the output to print every time.

like image 43
Talha Malik Avatar answered Oct 23 '22 23:10

Talha Malik