web-dev-qa-db-fra.com

Gradle: Comment obtenir la sortie du test STDERR / STDOUT dans la console?

(Gradle 3.2.1) Je lance quelques tests Java, qui enregistre la sortie dans Stderr/Stdout. Je peux voir cette sortie, si je démarre

gradle test --info

mais dans ce cas, une grande partie de la sortie indésirable des bibliothèques tierces est également présente.

Documentation suggère d'utiliser logging.caputureStandardError / logging.caputureStandardError (loglevel), mais cela ne semble pas avoir d'effet.

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

Ensuite, si vous exécutez gradle test, STDERR/STDOUT n'est pas affiché dans la console.

Comment puis-je obtenir uniquement la sortie des classes de tests dans la console?

28
Alexei Vinogradov

Ajoutez ces lignes à build.gradle:

apply plugin: 'Java'

test {
    dependsOn cleanTest
    testLogging.showStandardStreams = true
}

Remarquer: dependsOn cleanTest n'est pas nécessaire mais s'il n'est pas utilisé, vous devez exécuter cleanTest ou clean tâche avant test tâche.


Modifier:

Une meilleure approche:

apply plugin: 'Java'

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

Remarquer: outputs.upToDateWhen {false} n'est pas nécessaire mais s'il n'est pas utilisé, vous devez exécuter cleanTest ou clean tâche avant test tâche.

Pour plus d'informations et d'options, voir la documentation .

47
Omid

Pour ceux qui utilisent kotlin/kotlin dsl pour gradle, vous devez mettre ce qui suit dans votre fichier build.grade.kts:

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

De plus, comme mentionné dans une autre réponse, vous devrez exécuter un "test de nettoyage progressif" pour que la sortie s'imprime à chaque fois.

2
Talha Malik