Exécution d'un seul test JUnit dans Eclipse

85

Si j'ai une suite de tests avec plusieurs tests, lorsque j'essaie d'exécuter un seul test unitaire, soit à partir du menu contextuel de l'éditeur de code, soit à partir de la vue JUnit, il semble insister pour toujours exécuter la suite entière, plutôt que le test unique. Existe-t-il un moyen de désactiver pour modifier ce comportement afin que je puisse demander à exécuter cela, et seulement cela, tester.

user14128
la source
11
Ce serait bien si vous choisissez la meilleure réponse en cochant la marque verte à côté de la réponse.
guerda

Réponses:

96

Dans l'explorateur de packages, dépliez la classe. Il devrait vous montrer toutes les méthodes. Faites un clic droit sur la méthode que vous souhaitez exécuter, puis sélectionnez Exécuter en tant que -> JUnit dans le menu contextuel (juste testé avec Eclipse 3.4.1). La sélection de «Exécuter» sur une seule entrée dans la vue des résultats JUnit pour réexécuter un test fonctionne de la même manière.

Volker Stolz
la source
3
Malheureusement, cela ne fonctionne que pour les méthodes de test qui sont directement implémentées dans cette classe. Cela ne fonctionne pas pour les méthodes @Test héritées.
Christopher Barber
1
Notez qu'il semble que vous deviez cliquer sur le nom de la méthode. Cliquer à l'intérieur de la méthode exécutera toute la classe. (Ou du moins c'est comme ça que ça se comporte pour moi.)
emragins
Il semble que cela ne fonctionne qu'à partir de cet "explorateur de paquets" particulier, ce qui est plus que peu pratique lorsqu'il s'agit de trouver rapidement une méthode à tester. Et même que, le débogueur semble ignorer les autres méthodes - ce qui prend du temps supplémentaire. Il doit y avoir un meilleur moyen ...
Macilias
et c'est fragile non plus ... maintenant éclipse a décidé de ne pas sauter d'autres tests lors de l'exécution de cette façon :(
Macilias
27

Le moyen le plus rapide que je connaisse:

  1. Appuyez sur Ctrl+ Shift+ (déplace le curseur sur la déclaration de méthode actuelle),
  2. appuyez sur Alt+ Shift+ x(ou dpour le débogage) puis appuyez sur t(touche de raccourci pour "Run JUnit Test" ),
  3. vérifier le résultat du test,
  4. appuyez sur Alt+ pour revenir à la ligne de code que vous étiez auparavant.

Si vous souhaitez exécuter tous les tests, vous pouvez ignorer les étapes 1 et 4.

schnatterer
la source
13

Dans Eclipse 3.5, vous pouvez contourner ce problème en changeant le lanceur de test en JUnit 3. Cela ne fonctionnera que pour les tests JUnit 3, pas pour les tests JUnit 4. Vous pouvez modifier le lanceur de test en procédant comme suit:

  1. Cliquez avec le bouton droit sur l'une des méthodes de test dans l'explorateur Outline
  2. Sélectionnez Exécuter en tant que -> Exécuter les configurations
  3. Dans l'onglet "Test", sélectionnez "Exécuter un seul test"
  4. Dans la liste déroulante Test Runner, sélectionnez 'JUnit 3'

Cela peut également fonctionner dans d'autres versions.

lucratif
la source
Bon appel! Changer "Test Runner" en "JUnit 3" dans la boîte de dialogue des configurations d'exécution a fonctionné pour moi dans Eclipse 3.6.0 (Helios). Maintenant, je peux exécuter une seule méthode dans un test JUnit. FWIW, je n'ai jamais eu de problème pour exécuter des classes de test JUnit 3 ou 4 individuelles .
Adam Monsen
Parfait, cela a fonctionné pour moi aussi. La réponse ci-dessus n'a pas même si elle semble avoir plus de votes positifs.
dreza
12

Ceci est possible dans Eclipse Indigo avec JUnit 4.8.2. Vous cliquez avec le bouton droit de la souris sur la méthode que vous souhaitez tester individuellement dans le Outlinevolet, puis sélectionnez Run As -> JUnit Test.

Vous pouvez même faire un clic droit sélectif sur un nom de méthode de test dans l'éditeur de source et sélectionner Run As -> Junit Test.

wulfgarpro
la source
1
il semble tester ce cas de test spécifique. Cependant, après cela, il continue avec d'autres cas de test.
lwpro2
@ lwpro2 Vous devez utiliser JUnit 4 (annotations) pour tester un seul scénario de test. JUnit 3 (étendre TestCase) exécutera toujours tous les tests associés.
AnthonyW
1
wulfgar.pro Je faisais savoir à @ lwpro2 que si vous exécutez votre test JUnit avec un coureur JUnit 4 (parce que, par exemple, vous utilisez JUnit 4.8.2) ENCORE votre test étend toujours TestCase, vous ne pourrez pas exécuter un seul tester par lui-même. Vous devez soit utiliser un exécuteur JUnit 3, soit convertir votre test en utilisant des annotations.
AnthonyW
Merci pour les commentaires. Cependant, j'utilisais Junit4, avec SpringJunit4ClassRunner. Quoi qu'il en soit, ce n'est pas grave. commenter l'annotation est rapide.
lwpro2
cette réponse est la plus simple
Jackson Tale
9

N'utilisez pas Strg+ F11mais le raccourci clavier Alt+ Shift+ X-> T.
Ensuite, Eclipse exécutera le fichier ouvert actuel en tant que test JUnit. Le bouton de lecture vert exécutera uniquement la dernière configuration d'exécution choisie.

Pour moi, cela fonctionne bien avec Alt+ Shift+ X-> T.

Guerda
la source
Merci. Mais disons que vous travaillez sur une classe qui est testée par un test unitaire. Lorsque vous modifiez la classe, comment exécutez-vous son UnitTest correspondant sans basculer la fenêtre vers le fichier UnitTest?
bibstha
@bibstha Vous pouvez utiliser Ctrl + 3 puis taper "relancer". Cela vous permet de réexécuter le dernier scénario de test JUnit. Sous Fenêtre-> Préférences-> Général-> Touches, vous pouvez attribuer un propre raccourci pour cette action. Ctrl + Shift + F11 conviendrait, à mon avis.
guerda
9

J'ajouterai aux autres en incluant un seul moyen de clavier hautement productif qui vous permet de déboguer un seul test unitaire (méthode).

Déplacez votre curseur sur le nom de la méthode en utilisant soit

  • Ctrl+ Shift+ Upou
  • Ctrl+ Shift+ Downou
  • Ctrl+ opuis tapez le nom de la méthode

Une fois que votre curseur est sur le nom de la méthode (ou juste avant):

  • Alt+ Shift+ D-> T(Débogage)
  • Alt+ Shift+ X-> T(Exécuter)

Après avoir exécuté le test, vous pouvez revenir à l'emplacement de votre curseur en faisant:

Alt+Back

Vous obtenez presque un comportement de type REPL en:

Ctrl+ Shift+ Upet Alt+ Shift+ X-> Tet Alt+Back

Vous pouvez également définir rapidement un point d'arrêt:

Ctrl+ Shift+B

Adam Gent
la source
3

Cliquez avec le bouton droit quelque part sur le nom de la méthode de test dans le fichier et sélectionnez "Exécuter" -> "Test Junit". Je le fais tout le temps avec Kepler et JUnit 4.

Kyle Dyer
la source
2

J'ai eu le même problème que d'autres ont eu avec Eclipse 3.4.1 et JUnit 4 test runner - je ne pouvais pas exécuter un seul test. Mais j'ai trouvé une suggestion ailleurs qui a résolu le problème. Ma classe de test étendait toujours junit.framework.TestCase. Quand j'ai arrêté d'étendre TestCase, tout fonctionnait bien et j'ai pu exécuter des tests JUnit uniques avec le testeur JUnit 4. Bien sûr, j'avais besoin que les annotations JUnit 4 utilisent des importations statiques pour les méthodes d'assertion, mais je l'avais déjà fait - je n'avais tout simplement pas supprimé l'héritage TestCase.

Ghirschhorn
la source
1

Si vous avez plusieurs tests dans plusieurs fichiers et que vous souhaitez exécuter uniquement les tests dans un fichier particulier, vous pouvez cliquer avec le bouton droit sur ce fichier et sélectionner exécuter en tant que -> test junit. Maintenant, si vous voulez exécuter un seul test, contenu dans un fichier avec de nombreux tests, je suppose (je n'ai pas installé eclipse ici) que la vue Outline listera toutes les méthodes de test pour un fichier, et vous pourrez probablement cliquez avec le bouton droit de la souris sur une méthode de test unique et exécutez-la en tant que test JUNit.

J'espère que cela aide.

À M
la source
1

Pour exécuter une seule méthode de test.
Dans (l'explorateur de packages ou l'explorateur de projet) dépliez la classe. Il devrait vous montrer toutes les méthodes. Cliquez avec le bouton droit sur la méthode que vous souhaitez exécuter, puis sélectionnez Exécuter en tant que -> JUnit dans le menu contextuel.
entrez la description de l'image ici

Danilo
la source
0

Pour moi, cela ne fonctionne pas non plus dans Eclipse 3.4.2, bien que cela ait fonctionné dans les versions précédentes (j'ai essayé d'exécuter une méthode unique à partir de l'explorateur de packages et un test junit unique à partir de la vue Junit)


la source
L'exécution d'une seule méthode / test à partir de l'Explorateur de packages fonctionne très bien pour moi dans Eclipse 3.4.2.
Volker Stolz le
0

Je suis d'accord avec le point à propos de 3.4.2 ne fonctionnant plus comme il le faisait dans les versions précédentes. Avant, vous pouviez cliquer avec le bouton droit sur un seul test dans un groupe de tests à partir de la vue JUnit et exécuter uniquement ce test. Dans la dernière version, il insiste pour toujours les exécuter tous. Certes, la vue exécute le test sur lequel vous avez cliqué en premier et vide le reste dans un rollup appelé "Tests sans racine". Si quelqu'un comprend cela, j'aimerais savoir comment le contourner.

ra9r
la source
0

En lisant certains des commentaires ici, il semble que vous pourriez être intéressé à exécuter les tests pour le code que vous modifiez au fur et à mesure que vous le modifiez, sans perdre de vue le code sur lequel vous travaillez. Il existe un plugin eclipse pour faire exactement cela. Voir infinitest .

unigeek
la source