web-dev-qa-db-fra.com

Comment activer le débogage sur ma JUnit via la tâche de test Gradle

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!

34
mefi

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

78
Sergey

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.

24
Peter Niederwieser

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

Autre solution

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

Solution lors de l'utilisation du plug-in JUnit Platform Gradle

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'
    }
}
6
iloveretards

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

1
janoulle