2015-07-23 2 views
1

J'ai un test JUnit @Parameterized qui fonctionne. Maintenant j'essaye de créer un nouveau test qui exécute ce même test @Parameterized une fois pour 20 configurations de base de données.Un test Parameterized Parameterized ou une suite paramétrée avec un avant et un après

Vous avez regardé en ligne et il y a plusieurs personnes qui ont demandé cela mais il ne semble pas y avoir de solution satisfaisante. J'ai jeté un coup d'œil à Suite, mais il ne peut pas exécuter de test paramétré et aucune annotation ne peut être exécutée entre les tests de la suite pour préparer le prochain test de suite.

classe standard paramétrées:

@RunWith(Parameterized.class) 
public class MyParameterizedTest { 
    // works as normal 
} 

Voici un code pseudo de ce que je cherche:

@RunWith(RunParameterizedLots.class) 
@ParameterizedClassToTest(MyParameterizedTest.class) 
public class RunParameterizedLotsOfTimes<T> { 

    @ListOfTestStuff 
    public List<T> getList() { 
     return list of T; 
    } 

    @BeforeRunningMyParameterizedTest 
    public void beforePtest(T i) { 
     setupDatabaseConfig(i); 
    } 

    @AfterRunningMyParameterizedTest 
    public void afterPtest() { 
     teardownDatabaseConfig(i); 
    } 

} 

Rien de tout cela est écrit que j'ai passé 2 jours à lire la documentation JUnit et n » Je semble être plus proche. Les notes de version pour 4.12 parlent de @UseParametersRunnerFactory, ce qui semble aider, il y a aussi des choses avec le nouveau BlockJUnit4ClassRunnerWithParameters mais il ne semble pas y avoir d'exemple sur la façon de l'utiliser.

Je pourrais créer une classe "@RunWith (Parameterized.class)" qui alimente 1,2,3,4 en elle-même, mais ensuite comment lier les tests sous-paramétrés dans le sous-système JUnit afin qu'il soit agréable et fournisse affichage sensible.

J'espère que vous pouvez voir à partir de ma question de gaufre ce que j'essaie de faire je ne sais pas par où commencer ou si quelqu'un d'autre a déjà fait ce travail?

+0

Pourriez-vous montrer le code, s'il vous plaît? – helpermethod

Répondre

0

Vous ne pouvez pas paramétrer une suite de tests JUnit car les deux sont Runner s et vous ne pouvez avoir qu'une seule annotation @RunWith() lors de votre test.

Pour cette cause, j'ai écrit une nouvelle Runner qui combine la fonctionnalité des deux à un ParameterizedSuite: https://github.com/PeterWippermann/parameterized-suite Les bonnes nouvelles sont, il vous permet également d'utiliser @Before et @After!

Cependant, je ne sais pas si votre problème n'est pas différent: N'avez-vous pas deux paramètres? Vous dites, vous avez déjà un test paramétré et maintenant vous ne voulez pas exécuter ce test par rapport à une liste de configurations de base de données. Donc, ce serait votre deuxième paramètre. Vous souhaitez tester toutes les combinaisons de ces deux paramètres, n'est-ce pas?