NoClassDefFoundError при использовании Powermock
Я запускаю тестовый пример 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
...
Как я могу это исправить?
Ответы
Ответ 1
Я просто решил это сейчас, когда я добавил атрибут @RunWith(PowerMockRunner.class)
, eclipse
автоматически импортирован:
import org.powermock.modules.junit4.legacy.PowerMockRunner;
Все, что мне нужно сделать, это изменить его:
import org.powermock.modules.junit4.PowerMockRunner;
И теперь он отлично работает с JUnit 4.8.2
.
Второй бегун работает при старших версиях JUnit
, а именно 4.3
и старше.
Ответ 2
Смотрите здесь
Вероятно, вы используете неправильный 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
- является TestClassRunner в соответствующем пакете в junit-4.9b2jar?
- работает ли с junit 4.8?
Ответ 4
Я решил проблему. Я использовал старую версию junit-4.0.jar. Но я до сих пор не понимаю, почему отсутствует класс TestClassRunner, особенно в пакете powermock-easymock-junit-1.4.8.zip(есть junit-4.8.2.jar)? В junit-4.8.2.jar отсутствует класс TestClassRunner.
Ответ 5
Я использую 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>
Ответ 6
Это исключение возникает, если вы импортируете устаревшую версию PowerMockRunner.class при использовании JUnit 4.X или более поздней версии, поскольку этот устаревший класс недоступен для запуска при использовании его с аннотацией @RunWith. Я решил эту проблему, заменив прежнюю версию старой версии на новую версию.
Неправильный импорт:
import org.powermock.modules.junit4.legacy.PowerMockRunner;
Правильный импорт:
import org.powermock.modules.junit4.PowerMockRunner;