55 votes

Comment créer dynamiquement une suite de tests dans JUnit 4 ?

Je voudrais créer une suite de test junit en utilisant JUnit 4 où les noms des classes de test à inclure ne sont pas connus avant l'exécution de la suite de test.

Dans JUnit 3, je pouvais faire cela :

public final class MasterTester extends TestCase
{
  /**
   * Used by junit to specify what TestCases to run.
   * 
   * @return a suite containing what TestCases to run
   */
  public static TestSuite suite() {
    TestSuite suite = new TestSuite();

    for(Class<?> klass : gatherTestClasses()) {
      suite.addTestSuite(klass);
    }

    return suite;
  }
}

et laisser les gatherTestClasses() permet de déterminer les classes de test à exécuter.

Dans JUnit 4, le documentation dit d'utiliser une annotation : @SuiteClasses({TestClass1.class, TestClass2.class...}) pour construire ma suite de tests. Il y a de nombreuses réponses SO qui montre comment faire. Malheureusement, les exemples que je vois ne semblent pas permettre de passer une liste de TestClasses générée dynamiquement.

Ce site Réponse SO a suggéré que je devrais sous-classer BlockJUnit4ClassRunner ce que je ne veux pas faire.

Les suites de test spécifiées dynamiquement semblent être quelque chose qui doit se trouver quelque part dans JUnit 4. Quelqu'un sait-il où ?

0voto

kissLife Points 111
public class MyTestCase extends TestCase {
    @Override
    public void runTest() {
        // define assertion here  <===
        assertEquals("yes", "yes");
    }
}

@RunWith(AllTests.class)
public class DynamicTestSuite {
    public static TestSuite suite() {
        TestSuite suite = new TestSuite();

        // dynamically create your test case here  <====
        suite.addTest(new MyTestCase());

        return suite;
    }
}

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