web-dev-qa-db-de.com

So aktivieren Sie das Debuggen auf meiner JUnit über Gradle-Testaufgabe

Ich bekomme Probleme, während ich versuche, meinen JUnit-Test über die Gradle-Testaufgabe auszuführen. Während ich Test in Eclipse direkt mit Ausführen als -> JUnit-Test ausführe, ist alles in Ordnung, Test erfolgreich. Durch die Testaufgabe schlägt der Test jedoch immer fehl. Wahrscheinlich ein Problem mit der Codierung meiner txt-Ressourcendatei. Daher möchte ich das Debuggen aktivieren, während ich den Test mit gradle starte

in build.gradle sieht meine Testaufgabe jetzt so aus:

test {
    tasks.withType(Compile) {
        options.encoding = 'UTF-8'
    }
}

Was soll ich also tun, um das Debuggen zu aktivieren? Ich führe Gradle-Aufgaben über das Gradle-Bedienfeld in Eclipse aus, nicht über die Konsole. Vielen Dank!

34
mefi

Zum Debuggen von Tests sollte das folgende Argument verwendet werden: --debug-jvm

Zum Beispiel: gradle test --debug-jvm
Gradle unterbricht die Ausführung unmittelbar vor dem Ausführen von Tests und wartet auf die Debugger-Verbindung auf Port 5005.

Informationen zum Ausführen nur bestimmter Tests finden Sie unter https://docs.gradle.org/current/userguide/Java_testing.html#simple_name_pattern

78
Sergey

Wie unter 23.12. Test Im Gradle-Benutzerhandbuch erläutert, wird durch Ausführen von gradle test -Dtest.single=MyTestClass -Dtest.debug Die Test-JVM beim Start angehalten, und es kann ein externer Debugger (z. B. der Eclipse-Debugger) angeschlossen werden ) an Port 5005.

24

Setzen Sie dies hier als --debug-jvm hat bei mir nicht funktioniert, ich konnte dies tun, indem ich einstellte:

 org.gradle.daemon=true
 org.gradle.jvmargs=... -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=10999

im

 ~/.gradle/gradle.properties

Wenn ich mich jedoch mit dem Eclipse-Debugger für das Projekt verbinde, habe ich keinen der Haltepunkte gesetzt, die ich beim Kompilieren/Triggern festgelegt habe. Ich bin über den Debugger verbunden. Ich kann die Aktion in der Debug-Ansicht sehen, wenn ich gradle test von der Kommandozeile aus, wie neue Threads, die starten/stoppen, aber keine Haltepunkte zum Auslösen bekommen, um dies jetzt zu lösen ...

Zu Ihrer Information, um Deamon Run zu stoppen gradle --stop

Andere Lösung

Das oben als Referenz erwähnte Auslösen von Haltepunkten in Tests führte dazu, dass ich deamon ausschaltete, da es nicht richtig funktionieren konnte:

Anweisungen aus diesem Artikel verwenden: http://blogs.steeplesoft.com/posts/2013/gradle-tip-attaching-a-debugger.html

test {        
    if (System.getProperty('DEBUG', 'false') == 'true') {
        jvmArgs '-Xdebug',
            '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10999'
    }
}

Ausgeführt über gradle test -DDEBUG=true

Lösung bei Verwendung des JUnit Platform Gradle-Plugins

Die obige Lösung funktioniert nicht mit org.junit.platform.gradle.plugin.

Stattdessen sollte es ersetzt werden durch:

junitPlatformTest {        
    if (System.getProperty('DEBUG', 'false') == 'true') {
        jvmArgs '-Xdebug',
            '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10999'
    }
}
6
iloveretards

Ich bin auf 4.6 (gradle) und kann meine Tests debuggen, wenn ich dies in meiner build.gradle-Datei habe:

test {
    debug true
}

Link - https://docs.gradle.org/4.6/userguide/userguide_single.html#sec:Java_test

1
janoulle