Pourquoi un test unitaire qui est ignorée en raison de l'hypothèse de l'échec n'est pas signalé comme étant ignorés?
- Je utiliser junit hypothèses de décider si un test ou non.
Tests où l'hypothèse d'échec sont ignoré/sauté par le framework junit.
Je me demande pourquoi sauté tests ne sont pas déclarés comme 'sauté'?
Jetez un oeil à l'exemple:
import static org.junit.Assert.fail;
import org.junit.Assume;
import org.junit.Test;
public class AssumptionTest {
@Test
public void skipAssumptionFailureTest() {
Assume.assumeTrue("foo".equals("bar"));
fail("This should not be reached!");
}
}
L'exécution de ce test dans un projet maven résultats dans:
Running AssumptionTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 sec
Je préfère avoir ce test a rapporté que 'sauté'. Est-il possible de réaliser cela?
(junit 4.8.1; maven 2.2.1; java 1.6.0_21)
OriginalL'auteur FrVaBe | 2010-09-28
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire ce out-of-the-box comme le seul moyen de sauter des tests est avec le
@Ignore
annotation. Cependant, j'ai trouvé un post de blog qui pourrait être juste ce que vous cherchez:S'il vous PLAÎT ajouter les éléments importants à partir du blog comme une réponse, cette réponse sera tout à fait inutile dès que ce blog disparaît. (Je suis impressionné personne n'a mentionné ce pour les 7 dernières années)
OriginalL'auteur dogbane
Printemps apporte une autre variante de l'Ignorer annotation, qui est en mesure de décider à l'exécution d'ignorer un test:
@IfProfileValue
. En combinaison avec un utilisateur fourniProfileValueSource
dans un@ProfileValueSourceConfiguration
, vous pouvez faire quelques limitée astuces.Voir Printemps De La Documentation De Test.
Mais ce n'est pas la même chose que d'être en mesure d'effectuer des tests de code et au moyen de la méthode d'essai décider d'ignorer le test, que vous pouvez avec des hypothèses.
Note: Printemps
@IfProfileValue
seulement ignore/ignore le test si le nom et la valeur ne correspond pas et il n'a pas d' pas-run. Si vous voulez mettre en œuvre JUnit Catégories de type de mise en œuvre avec cela, vous pouvez avoir besoin pour la fin de l'extension deSpringJUnit4ClassRunner#runChild
à pas-run au lieu de ignorer. Ce sont essentiellement des questions si ses résultats sont dans jenkins.OriginalL'auteur Christian Semrau
Alors que les réponses précédentes sont bien sur leur propre, je voudrais aborder la question du "POURQUOI" question.
Le problème tient au fait comment les tests ont échoué /ignorés étaient comptés. Lorsque les hypothèses ont été ajoutés, d'habitude les chiffres étaient un peu brochettes (hypothèse ne peut IGNORER les tests à mi-chemin par le biais de la course).
Outils coureurs ont eu des problèmes avec ça, causant un désordre de reporting. Voir ici pour Surefire dev conversation avec JUnit personnes, et ici pour Eclipse bug.
Droit maintenant, ce n'est pas un problème dans Maven, et il ne devrait pas être dans les plus récents Éclipses. J'utilise STS basé sur
eclipse.buildId = 2.9.2.201205071000-RELEASE
et j'ai encore l'expérience de ce comportement.EDIT: référence type de liens n'a pas de travail.
OriginalL'auteur LIttle Ancient Forest Kami