web-dev-qa-db-fra.com

Comment obtenir Junit 4 pour ignorer une classe de test de base?

J'ai une classe de base pour de nombreux tests qui a quelques méthodes d'assistance dont ils ont tous besoin.

Il n'a pas de test en lui-même, mais JUnit (dans Eclipse) appelle le lanceur de test dessus et se plaint qu'il n'y a pas de méthode à tester.

Comment puis-je lui faire ignorer cette classe?

Je sais que je pourrais ajouter une méthode dummyTest qui résoudrait le problème, mais elle apparaîtrait également pour toutes les classes enfants.

Suggestions?

53
Allain Lalonde

Avoir l'habitude de @Ignore annotation. Il fonctionne également sur les cours. Voir celui-ci:

@Ignore public class IgnoreMe {
                        @Test public void test1() { ... }
                        @Test public void test2() { ... }
                }

De plus, vous pouvez annoter une classe contenant des méthodes de test avec @Ignore et aucun des tests contenant ne sera exécuté.

Source: JUnit JavaDoc

88
guerda

Juste comme une note, je recommanderais toujours de donner une raison pour l'ignorer:

@Ignore("This test will prove bug #123 is fixed, once someone fixes it")

J'espère que le formateur de rapports junit xml, utilisé lors de l'exécution de tests à partir de ant, inclura un jour le nombre ignoré (et les raisons) avec succès, échec et erreur.

27
matt burns

Faire de la classe abstract devrait être suffisant pour JUnit 4. Si cela ne fonctionne pas, vérifiez la version de JUnit que vous utilisez.

Cela indique également votre intention que ce ne soit qu'un fragment d'un test.

Cela empêche également JUnit de compter les tests de la classe comme "ignorés" (donc le nombre final de tests ignorés sera ce que vous attendez).

Vous pouvez également renommer la classe. La plupart des coureurs utilisent le nom de classe pour déterminer quelles classes sont des tests et lesquelles sont des aides. Dans Maven avec les paramètres par défaut, vous devez simplement vous assurer que la classe de base ne commence ni ne se termine par Test et ne se termine pas par TestCase ( http: // maven.Apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html )

17
Aaron Digulla

Il y a 2 options:

  1. Vous devez créer la classe de test de base abstrait, cela suffit pour Junit4. Si vous utilisez l'attribut @Igonre, il l'affichera comme un test ignoré (et l'ajoutera au nombre total de tests).

  2. Vous pouvez modifier le nom de la classe de test qui il n'aura pas le mot Test (sensible à la casse) au début ou à la fin du nom du test/ou le Word TestCase à la fin.

BTW: @Igonre est pour un cas d'utilisation différent, lorsque vous souhaitez ignorer un test spécifique.

4
Tal Avissar