Protokollieren während des Testens durch Gradle

Lesezeit: 3 Minuten

Benutzer-Avatar
fehlender Faktor

Beim Testen scheint Gradle stdout/stderr zu umzuleiten project_dir/build/reports/tests/index.html. Gibt es eine Möglichkeit, diese Umleitung zu vermeiden und stattdessen Dinge auf der Konsole auszugeben?

Zusätzliche Information:

  • Es ist ein Scala 2.9.1-Projekt.
  • ich benutze slf4s zum Loggen.

apply plugin : 'java'

test {
    testLogging.showStandardStreams = true
}

http://gradle.org/docs/current/dsl/org.gradle.api.tasks.testing.Test.html

Voraussetzung ist eine aktuelle Gradle-Version. Ich gehe davon aus, dass die Scala-Tests unter der Java-Testaufgabe ausgeführt werden.

  • Hoppla, beim Testen sieht es so aus, als ob es nicht so wäre, dies erzeugt jedoch eine Ausgabe für mich: pastebin.com/PX8e1EKv Bearbeiten: Ändern Sie das println zu einem Druck, da ich denke, dass das Ereignis den Zeilenumbruch erfasst

    – Robe

    20. Februar 2012 um 9:13 Uhr


  • Danke. Das werde ich auch versuchen. Ich habe auch einige Protokollanweisungen in Quelldateien. Wie bringe ich sie dazu, auf der Konsole zu drucken?

    – fehlender Faktor

    20. Februar 2012 um 9:42 Uhr

  • Dies hängt von der Implementierung der Protokollierung ab. slf4s verwendet möglicherweise standardmäßig einen NOP-Logger und verwirft Ihre Protokollanweisung. Haben Sie ein Logger-Implementierungs-JAR im Test-Klassenpfad? Wenn slf4j-simple-1.6.4.jar vorhanden ist, werden INFO und höher in STDERR protokolliert. Wenn das nicht ausreicht, würde ich ein Logback-Jar hinzufügen und eine logback-test.xml einrichten, um Protokolle an die Konsole anzuhängen.

    – Robe

    20. Februar 2012 um 19:31 Uhr

  • Arbeitete für mich mit Frühling/JUnit

    – Dmitri Minkowski

    9. Januar 2015 um 16:54 Uhr

  • Es “funktioniert nicht”, möglicherweise weil die Testaufgabe als aktuell gilt und nicht ausgeführt wird, daher sehen Sie keine Ausgabe. Sie können beides tun $ gradle clean test oder verwenden outputs.upToDateWhen {false} innerhalb der testLogging Block (test { testLogging { outputs...). Einzelheiten siehe Dokumente.

    – Johnny Quatsch

    9. Februar 2018 um 16:12 Uhr

Ich benutze auch (testLogging.exceptionFormat="full"):

test {
    testLogging.showStandardStreams = true
    testLogging.exceptionFormat="full"
}

Was gut ist, mehr von Stacktrace zu sehen

  • Das exceptionFormat Einstellung hat bei mir funktioniert, showStandardStreams hatte keine wirkung!

    – Shakel

    18. Oktober 2017 um 23:12 Uhr

Benutzer-Avatar
joshuakcockrell

Für Android-Gradle-Dateien

Wenn Sie sich in einer Android-Gradle-Datei befinden (if apply plugin: 'com.android.application' befindet sich oben in Ihrer build.gradle-Datei)

Fügen Sie dies dann in build.gradle ein

// Test Logging
tasks.withType(Test) {
    testLogging {
        events "standardOut", "started", "passed", "skipped", "failed"
    }
}

Für normale Gradle-Dateien

Fügen Sie dies in build.gradle ein

// Test Logging
test {
    testLogging {
        showStandardStreams = true
    }
}

Benutzer-Avatar
nmfzone

Wie @roby antwortete:

Hinzufügen des folgenden Codes zu Ihrer build.gradle

apply plugin : 'java'

test {
    testLogging.showStandardStreams = true
}

Wichtig!

Sie müssen den Gradle-Test ausführen oder mit hinzugefügten erstellen clean Befehl.

./gradlew clean test

or

./gradlew clean build

Hoffe das funktioniert.

Benutzer-Avatar
zhouji

test {
    testLogging.showStandardStreams = true
}

und

test {
    testLogging {
        showStandardStreams = true
    }
}

funktioniert auch.

Benutzer-Avatar
Johnny Baloney

Nur um hinzuzufügen, die:

showStandardStreams = true

ist ein Kurzschrift zum:

events = ["standard_out", "standard_error"]

Es ist wichtig, dies zu beachten, wenn Sie beide Einträge wie folgt mischen:

test {
    testLogging {
        showStandardStreams = true
        events = ["passed", "failed", "skipped"]
    }
}

wird darin enden, dass kein stdout während die umgekehrte Reihenfolge:

test {
    testLogging {
        events = ["passed", "failed", "skipped"]
        showStandardStreams = true
    }
}

fügt die stdout-Einträge zur Liste hinzu, so stdout wird funktionieren.

Sehen die Quelle für Details.

Wenn Sie Kotlin DSL mit verwenden build.gradle.kts die Syntax ist etwas anders.

Stellen Sie sicher, dass Sie die junit in Ihren Abhängigkeiten haben:

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter:5.4.2")
    testImplementation("org.junit.jupiter:junit-jupiter-api")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}

Dann müssen Sie Ihrer Testaufgabe Folgendes hinzufügen:

import org.gradle.api.tasks.testing.logging.TestExceptionFormat

tasks.test {
    useJUnitPlatform()
    testLogging {
        showStandardStreams = true
        exceptionFormat = TestExceptionFormat.FULL
        events("skipped", "failed")
    }
}

Dann können Sie die Einstellungen je nach Bedarf anpassen.

1257730cookie-checkProtokollieren während des Testens durch Gradle

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy