2015-09-28 3 views
2

Я использую junit 4.12, jmockit 1.19 & spring-test 4.1.1.RELEASE для тестирования моего проекта MVC Spring MVC.JMockit не был правильно инициализирован

Порядок этих зависимостей в моей pom.xml:

  • jmockit
  • junit
  • spring-test

Тестовые случаи для обслуживания слоя работает нормально. Я использую весенний тест только для тестирования контроллеров. Во время тестирования контроллера, я получил следующее сообщение об ошибке:

java.lang.IllegalStateException: JMockit wasn't properly initialized; please ensure that jmockit precedes junit in the runtime classpath, or use @RunWith(JMockit.class)

Для обслуживания слоя, я решил эту ошибку с помощью @RunWith(JMockit.class) на тестовом классе.

Но для контроллера мне необходимо аннотировать @RunWith(SpringJUnit4ClassRunner.class).

Как устранить эту ошибку?

Примечание: Я ставлю перед тем jmockitjunit в pom.xml

+0

Если вы можете перейти на Spring Framework 4.2.1, теперь для JUnit _Rules_ существует первоклассная поддержка. Поэтому вам не нужен «SpringJUnit4ClassRunner»: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-junit4-rules –

+0

Я считаю, что вы должен показать примерный тестовый класс и пример файла pom.xml, который воспроизводит проблему. Я тестировал эту комбинацию инструментов (jmockit, junit и spring-test), но не видел сбоев инициализации. –

ответ

1

Я не совсем уверен, что это решит вашу проблему, как я только начал использовать JMockit себя и работает в подобных вопросах стиля.

Вы пробовали использовать -javaagent :? Самый простой способ применить все тесты JUnit (Eclipse) - это перейти к настройкам JRE и добавить в качестве аргумента VM (Preferences-> JRE-> Edit-> VM Defaults).

Кроме того, я нашел плагин Eclipse JMockit через Marketplace, который автоматически добавит javaagent к любому тестированию junit, чтобы избежать конфигурации JRE.

Наконец, в вашем ПОМ, вы можете попробовать (хотя я не проверял это сам еще):

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <argLine>-javaagent:${org.jmockit:jmockit:jar}</argLine> 
      </configuration> 
     </plugin> 

Однако, имейте в виду, что это будет работать только для Maven начал испытания, а не через IDE. Я не нашел способ, чтобы плагин m2e понимал необходимость добавления javaagent к junit-тестам.