Je rencontre des problèmes pendant que j'essaie d'exécuter mon test JUnit via une tâche de test gradle. Alors que je lance le test dans Eclipse directement avec Run As -> JUnit test, tout va bien, le test réussit. Mais grâce à la tâche de test, le test échoue toujours. Probablement quelques problèmes avec l'encodage de mon fichier txt de ressources. Je voudrais donc activer le débogage pendant que je lance le test avec gradle
dans build.gradle, ma tâche de test ressemble maintenant à:
test {
tasks.withType(Compile) {
options.encoding = 'UTF-8'
}
}
Alors, que dois-je faire pour activer le débogage? J'exécute des tâches Gradle depuis le panneau Gradle dans Eclipse, pas depuis la console. Merci!
Pour déboguer les tests, l'argument suivant doit être utilisé: --debug-jvm
Par exemple: gradle test --debug-jvm
Gradle suspendra l'exécution juste avant d'exécuter les tests et attendra la connexion du débogueur sur le port 5005.
Pour exécuter uniquement des tests spécifiques, voir https://docs.gradle.org/current/userguide/Java_testing.html#simple_name_pattern
Comme expliqué sous 23.12. Test
dans le Gradle User Guide , exécutant gradle test -Dtest.single=MyTestClass -Dtest.debug
suspendra la JVM de test au démarrage et permet de connecter un débogueur externe (tel que le débogueur Eclipse) sur le port 5005.
Mettre ceci ici comme --debug-jvm
n'a pas fonctionné pour moi, j'ai pu le faire en définissant:
org.gradle.daemon=true
org.gradle.jvmargs=... -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=10999
dans
~/.gradle/gradle.properties
Mais lorsque je me connecte avec le débogueur Eclipse pour le projet, aucun des points d'arrêt que j'ai défini pour la compilation/déclenchement ... Je suis connecté via le débogueur, je peux voir l'action dans la vue Débogage, chaque fois que j'exécute gradle test
à partir de la ligne de commande, comme de nouveaux threads démarrant/s'arrêtant, mais ne pouvant pas déclencher de points d'arrêt, essayant de résoudre ce problème maintenant ...
Fyi pour arrêter la course de démon gradle --stop
Laissant ci-dessus comme référence, cela a fonctionné pour déclencher des points d'arrêt dans les tests, j'ai désactivé le démon car je ne pouvais pas le faire fonctionner correctement:
En utilisant les instructions de cet article: 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'
}
}
Exécutée via gradle test -DDEBUG=true
La solution ci-dessus ne fonctionnera pas lors de l'utilisation de org.junit.platform.gradle.plugin
.
Au lieu de cela, il devrait être remplacé par:
junitPlatformTest {
if (System.getProperty('DEBUG', 'false') == 'true') {
jvmArgs '-Xdebug',
'-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10999'
}
}
Je suis sur 4.6 (gradle) et je peux déboguer mes tests quand j'ai ceci dans mon fichier build.gradle:
test {
debug true
}
Lien - https://docs.gradle.org/4.6/userguide/userguide_single.html#sec:Java_test