9
votes

Tests Junit dans Eclipse Échec de l'échec lorsqu'il est exécuté ensemble

J'ai un ensemble de 44 tests Junit que je cours à l'aide d'Eclipse (j'ai eu ces tests de quelqu'un d'autre - je suis nouveau aux tests Junit). Quand je les couronne tous ensemble, 24 d'entre eux échouent. Cependant, si j'exécute les échecs individuellement, certains d'entre eux passent après tout. Les tests prennent un peu de temps - l'un des échecs par exemple prend environ une ou deux minutes à compléter, tout en laissant tous courir les finis en quelques secondes seulement.

Je commence plusieurs tests en cliquant avec le bouton droit de la souris sur le dossier, vous sélectionnez "Exécuter comme -> Test Junit". J'utilise Junit 3. Est-ce que je fais quelque chose qui ne va pas dans les démarrer / y a-t-il une sorte d'option que je manque?


0 commentaires

3 Réponses :


14
votes

Il est difficile de dire avec certitude sans voir les tests, mais cela me semble comme si elles partagent un état ou une ressource qui ne sont pas réinitialisées correctement pour le prochain test.


1 commentaires

Dans mon cas, c'était une variable statique privée qui changeait. J'ai dû réinitialiser la variable après chaque test. Utilisé @After Annotation pour baliser la méthode de nettoyage.



5
votes

La réponse de Garyf est une possibilité. Un autre est que les tests ont une condition de raccourci: si un test réussit ou non dépend de la rapidité avec laquelle quelque chose se produit (pouvant varier en raison des aléas de l'O / S). Si vous exécutez les tests d'échec séparément, les toujours réussissent ou échouent-ils parfois. S'ils échouent parfois, alors vous avez probablement une condition de race.


2 commentaires

Je ne peux pas vérifier maintenant parce que le code est au travail, mais les 4 ou 5 fois j'ai essayé, ils ont toujours réussi. Je n'ai pas non plus quelque chose dans le code junité pour me suggérer qu'il y a une condition de temps en eux.


@pyvi puis le scénario de Garyf est plus cohérent avec les preuves.



5
votes

Pour développer la réponse de Gary, lorsque vous cliquez sur le bouton droit de la souris et que JUNIT, vous ne pouvez pas garantir la commande dans laquelle les tests sont exécutés, ce qui pourrait également aider à corrompre une ressource partagée.

Je commencerais par regarder vos méthodes de configuration () et de déchirures () pour vous assurer que les ressources partagées sont correctement réinitialisées. De plus, comme vous avez hérité de ces tests, vous voudrez peut-être envisager si l'un des tests dépend des uns des autres. Bien que ce soit une mauvaise pratique et que vous devriez être modifié, vous pouvez peut-être créer une suite de test () pour assurer la commande dans laquelle ils sont exécutés (au moins jusqu'à ce que vous puissiez récupérer et découpler les tests).


1 commentaires

Dans mon cas, c'était une mauvaise configuration d'Ehcache. Trop localisé pour être une réponse, alors commentant la réponse "meilleure forme". Voir Stackoverflow.com/a/21458679/837154