Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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;