web-dev-qa-db-fra.com

NoClassDefFoundError lors de l'utilisation de Powermock

J'exécute un scénario de test junit à l'aide du programme d'exécution PowerMock . J'utilise la ligne de commande suivante pour l'exécuter:

Java -cp .:junit-4.9b2.jar:easymock-3.0.jar:powermock-easymock-1.4.8-full.jar org.junit.runner.JUnitCore SampleTest

Ce faisant, je reçois cette erreur:

initializationError(SampleTest)
Java.lang.NoClassDefFoundError: org/junit/internal/runners/TestClassRunner
...

Comment puis-je le réparer?

25
lukas

Je viens de résoudre celui-ci maintenant, lorsque j'ai ajouté l'attribut @RunWith(PowerMockRunner.class), Eclipse automatiquement importé:

import org.powermock.modules.junit4.legacy.PowerMockRunner;

Tout ce que j'avais à faire était de le changer pour qu'il soit:

import org.powermock.modules.junit4.PowerMockRunner;

Et maintenant, cela fonctionne bien avec JUnit 4.8.2.

Le 2nd coureur est destiné aux anciennes versions de JUnit - en particulier 4.3 et antérieures.

73
RonK

Voir ici

Vous utilisez probablement le mauvais PowerMockRunner. Il y a un coureur créé pour JUnit 4.4 et supérieur et un deuxième coureur pour JUnit 4.0-4.3 (bien que ce dernier fonctionne également pour certaines versions mineures plus anciennes de JUnit 4.4).
Essayez de passer de org.powermock.modules.junit4.PowerMockRunner à org.powermock.modules.junit4.legacy.PowerMockRunner ou inversement. Regardez le guide de démarrage pour voir comment configurer cela dans maven.

6
juan

Cette exception se produit lorsque vous importez la version héritée de PowerMockRunner.class lorsque vous utilisez JUnit 4.X ou une version ultérieure, car cette classe héritée n'est pas disponible pour être exécutée avec l'annotation @RunWith. J'ai résolu ce problème en remplaçant la version précédente par une ancienne version importée.

Importation incorrecte:

import org.powermock.modules.junit4.legacy.PowerMockRunner;

Importation correcte:

import org.powermock.modules.junit4.PowerMockRunner;
2
Shreeram Reddy

J'utilise JUnit 4.0 - 4.3 et j'ai mis à jour ma dépendance à maven pour utiliser la version 2.0.0-beta.5 de powermockito. Cela a juste commencé à fonctionner.

 <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>2.0.0-beta.5</version>
    <scope>test</scope>
 </dependency>
 <dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito2</artifactId>
    <version>2.0.0-beta.5</version>
    <scope>test</scope>
  </dependency>
0

J'ai résolu le problème. J'ai utilisé l'ancienne version junit-4.0.jar. Mais je ne comprends toujours pas pourquoi la classe TestClassRunner manque en particulier dans le paquetage powermock-easymock-junit-1.4.8.Zip (il y a junit-4.8.2.jar) La classe TestClassRunner manque également dans le junit-4.8.2.jar.

0
lukas