NoClassDefFoundError при использовании Powermock - PullRequest
27 голосов
/ 14 марта 2011

Я запускаю тестовый набор junit с использованием тестового бегуна PowerMock. Я использую следующую командную строку для ее выполнения:

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

При этом я получаю эту ошибку:

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

Как я могу это исправить?

Ответы [ 5 ]

77 голосов
/ 05 июля 2011

Я только что решил это сейчас, когда я добавил атрибут @RunWith(PowerMockRunner.class), eclipse автоматически импортируется:

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

Все, что мне нужно было сделать, это изменить на:

import org.powermock.modules.junit4.PowerMockRunner;

И теперь он отлично работает с JUnit 4.8.2.

2-й раннер предназначен для работы со старыми версиями JUnit, в частности 4.3 и старше.

7 голосов
/ 23 сентября 2011

См. здесь

Возможно, вы используете неправильный PowerMockRunner. Есть один бегун, созданный для JUnit 4.4 и выше, и второй бегун, созданный для JUnit 4.0-4.3 (хотя последний также работает для некоторых более старых минорных версий JUnit 4.4).
Попробуйте переключиться с org.powermock.modules.junit4.PowerMockRunner на org.powermock.modules.junit4.legacy.PowerMockRunner или наоборот. Посмотрите руководство по началу работы , чтобы узнать, как настроить это в maven.

3 голосов
/ 03 декабря 2018

Это исключение возникает при импорте устаревшей версии PowerMockRunner.class при использовании JUnit 4.X или более поздней версии, поскольку этот устаревший класс недоступен для запуска при использовании его с аннотацией @RunWith. Я решил эту проблему, заменив импорт устаревшей версии новой версией.

Неправильный импорт:

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

Правильный импорт:

import org.powermock.modules.junit4.PowerMockRunner;
1 голос
/ 14 марта 2011

Я решил проблему. Я использовал старую версию junit-4.0.jar. Но я до сих пор не понимаю, почему отсутствует класс TestClassRunner, особенно в пакете powermock-easymock-junit-1.4.8.zip (есть junit-4.8.2.jar)? В файле junit-4.8.2.jar также отсутствует класс TestClassRunner.

0 голосов
/ 27 сентября 2018

Я использую JUnit 4.0 - 4.3, и я обновил свою зависимость maven для использования версии powermockito 2.0.0-beta.5.Это только начало работать.

 <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>
...