8
votes

Pourquoi un test JUNIT est-il ignoré en raison d'une défaillance de supposition n'est pas signalée comme ignorée?

J'utilise des hypothèses junit pour décider de lancer un test ou non.
Tests où l'hypothèse échoue sont ignoré / ignoré par le Cadre Junit.

Je me demande pourquoi les tests sautés ne sont pas signalés comme "ignorés"? p>

Veuillez consulter l'exemple: P>

Running AssumptionTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec


0 commentaires

4 Réponses :


1
votes

Vous ne pouvez pas faire cette touche hors tension car le seul moyen de sauter des tests est avec l'annotation @ignore . Cependant, j'ai trouvé un Publication du blog Ce qui pourrait être juste ce que vous recherchez:


4 commentaires

Merci pour la réponse. Dommage que cela ne fonctionne pas hors de la boîte. La mise en œuvre d'un coureur personnalisé ne fonctionnera pas pour moi - j'utilise normalement déjà un coureur personnalisé (Springjunit4ClassRunner) dans mes tests que je ne prolongerai pas. J'aurais préféré une solution de solution.


Veuillez ajouter les pièces importantes du magasin de blog comme une réponse, sinon cette réponse sera assez inutile dès que ce blog Publier disparaît. (Je suis impressionné que personne n'a mentionné cela au cours des 7 dernières années)


En effet, bien que le blog post est là, le code informatique est maintenant terminé depuis longtemps.


@Donalfellows, le code peut toujours être trouvé dans le référentiel lié à partir du blog Post: code.google.com/archive/p/programatiquementPeaking/source/... Vous devez cliquer sur" Télécharger "dans la phrase" Téléchargez le code de ce repo. ". Si le site est fermé, vous pouvez aussi Téléchargez-le depuis Internet Archive .



2
votes

Spring apporte une autre variante d'une annotation ignorée, qui est capable de décider au moment de l'exécution d'ignorer un test: @IFProfilevalue . En combinaison avec un utilisateur fourni profilevaluesource dans un @profilevaluesourceconfiguration , vous pouvez faire des astuces limitées.

voir Documentation de test de ressort .

Mais ce n'est pas la même chose que de pouvoir effectuer un code de test et au milieu de la méthode de test décider d'ignorer le test, comme vous le pouvez avec des hypothèses.


1 commentaires

Remarque: ressort @IFProfilevalue uniquement ignore / ignore le test si le nom et la valeur ne correspondent pas et ce n'est pas non-exécuté IT . Si vous souhaitez mettre en œuvre des catégories junit type de mise en œuvre avec ceci, vous devrez peut-être finir par extension de SpringJunit4ClassRunner # Runchild à Not-Run au lieu de Ignoring . Cela compte principalement si ses résultats sont à Jenkins.



3
votes

Alors que les réponses précédentes sont bonnes par elles-mêmes, j'aimerais aborder la question "pourquoi".

Le problème découle de la manière dont les tests ont échoué / ignoré ont été comptés. Lorsque des hypothèses ont été ajoutées, les comptes habituels étaient un peu brofiés (l'hypothèse peut ignorer les tests à mi-chemin de sa course).

Les coureurs des outils ont eu des problèmes de cela également, causant des rapports en désordre. Voir ici pour la conversation de Dev Santfire avec des personnes Junit et ici pour un bug éclipse associé .

en ce moment, ce n'est pas un problème dans Maven, et il ne devrait pas être dans les éclipses plus récents . J'utilise des STS sur la base de éclipse.buildid = 2.9.2.201205071000-Release et je ressens toujours ce comportement.

Edit: Type de référence Les liens n'ont pas fonctionné.


0 commentaires

0
votes

sur Maven La solution est assez simple, ajoutez simplement ceci sur la section Plugin de votre POM.XML!

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>3.0.0-M5</version>           
</plugin>


0 commentaires