24 votes

jUnit ignore les méthodes @Test de la classe de base

Supposons que j'aie une classe de test appelée testFixtureA avec plusieurs méthodes testA , testB , testC etc, chacun avec @Test annotation.

Supposons maintenant que je sous-classe testFixtureA dans une classe appelée testFixtureAB et je n'écrase rien. testFixtureAB est vide pour l'instant.

Lorsque j'exécute des tests à partir de testFixtureAB , méthodes testA , testB y testC sont exécutées par le programme de test car celui-ci ne fait pas de distinction entre les méthodes de test de la classe et celles de la classe de base.

Comment puis-je forcer l'exécution des tests à laisser de côté les tests de la classe de base ?

0voto

John Gilmer Points 651

J'ai rencontré un problème similaire avec une classe de base générique abstraite TestBase et deux sous-classes TestA, TestB qui étendent la classe de base. Je voulais que tous les tests de TestBase soient exécutés pour TestA mais que certains soient ignorés pour TestB. Vous pouvez utiliser les annotations JUnit Nested y Disabled pour regrouper les tests de la classe de base en catégories et activer ensuite une désactivation complète de cette catégorie entière de tests.

public class TestB extends TestBase {

  // disable entire suite of inherited tests
  // from the nested class declared on the parent
  @Nested
  @Disabled
  public class ComponentCTests {}

}

public abstract class TestBase {

  @Nested
  public class ComponentCTests {
     @Test
     public void testSomething() {
      // test something
      }
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X