2010-03-16 5 views
30

J'ai essayé de comprendre comment exécuter des tests paramétrés dans Junit4 avec PowerMock. Le problème est que pour utiliser PowerMock dont vous avez besoin pour décorer votre classe de test avecJunit Tests paramétrés avec Powermock - comment?

@RunWith(PowerMockRunner.class) 

et d'utiliser des tests paramétrés vous devez décorer avec

@RunWith(Parameterized.class) 

D'après ce que je peux voir, ils semblent mutuellement exclus !? Est-ce vrai? Y at-il un moyen de contourner cela? J'ai essayé de créer une classe paramétrée dans une classe exécutée avec PowerMock; quelque chose comme ceci:

@RunWith(PowerMockRunner.class) 
class MyTestClass { 
    @RunWith(Parameterized.class) 
    class ParamTestClass { 
      // Yadayada 
    } 
} 

Mais malheureusement, cela ne fait pas beaucoup de bien ... Le ParamTestClass ne fonctionne toujours pas avec le soutien de PowerMock (pas étonnant peut-être) ... Et je suis à court de genre sur d'idées donc toute aide est grandement appréciée!

Mise à jour: Pour l'avenir Googlers voir aussi: Using PowerMock without the RunWith?

Répondre

0

Vous ne pouvez pas utiliser deux coureurs de classe à la fois, vous aurez certainement écrire votre propre lanceur de test pour y arriver. Je ne sais rien à propos de Powermock, mais après 10 secondes de recherche, il semble qu'une solution serait d'écrire un coureur de test qui utilise le chargeur de classe de powermock et exécute des tests paramétrés. Si vous pouvez déterminer comment déléguer au coureur de test paramétré à partir de votre coureur de test personnalisé, cela pourrait être votre meilleur pari.

+0

Nous vous remercions de votre suggestion. Je vais jeter un coup d'oeil au chargeur de classe de powermock. –

14

Oui cela fonctionne en utilisant le PowerMock Rule disponible si vous utilisez JUnit 4.7+.

16

J'ai eu le même problème. Malheureusement, il ne m'a pas permis d'utiliser une règle PowerMock en raison de la JVM que j'avais. Au lieu de la règle, j'ai utilisé RunnerDelegate.

@RunWith(PowerMockRunner.class) 
@PowerMockRunnerDelegate(Parameterized.class) 
+0

Avait le même problème JVM, cette solution a fonctionné comme un charme. À votre santé! –

Questions connexes