2013-12-19 5 views
3

Я установил JMockit для использования с некоторыми тестами JUnit, используя Robolectric, но я получаю ошибки. Я использую maven для запуска тестов.JMockit javaagent не инициализируется JMockit

Когда я запускаю тест с MVN тест и javaagent сконфигурированный, как указано here я получаю обычное исключение:

java.lang.IllegalStateException: JMockit не был инициализирован; проверить, что jmockit.jar предшествует junit.jar в пути к классам (при использовании JUnit, если нет, то обратитесь к документации)

Я подтверждено, что JMockit находится на пути к классам Перед JUnit с использованием mvn dependency:build-classpath и mvn test --debug. Я также подтвердил, что аргумент -javaagent надлежащим образом вызывается с использованием mvn test --debug.

Библиотека версии:

  • JDK 1.6
  • JMockit 1,5
  • JUnit 4.8.2
  • Robolectric 2,2 Robolectric бегун мешает мне с помощью JMockit бегуна.
  • Maven 3.0.3
  • Surefire класс 2.14.1

Испытание следующим образом:

@RunWith(RobolectricTestRunner.class) 
public class HelpFragTest { 

    FragmentActivity activity; 
    FragmentManager fragmentManager; 
    @Mocked ActionBarManager actionBarManager; 

    @Before 
    public void setup() throws Exception { 
     activity = Robolectric.buildActivity(FragmentActivity.class).create().resume().get(); 
     fragmentManager = activity.getSupportFragmentManager(); 
     MyApplication.instance().setActionBarManager(actionBarManager); 
    } 

    @Test 
    public void testShow(){ 
     new NonStrictExpectations() {{ 
      Helper.staticMethod(anyString, anyString); 
      actionBarManager.clear(); 
      actionBarManager.setTitle(anyString); 
      actionBarManager.refresh(); 
     }}; 
     HelpFrag frag = HelpFrag.newInstance(); 
     FragmentTransaction transaction = fragmentManager.beginTransaction(); 
     transaction.add(frag, StringUtils.EMPTY); 
     transaction.commit(); 

     assertTrue(frag.isVisible()); 

    } 
} 

Я также попытался без любого явного бегуна или JavaAgent, в этом случае я получаю следующее исключение от того же кода:

java.lang.IllegalStateException: Invalid место для записи ожидания

+0

связанных с этим вопросом: [java.lang.NoSuchMethodException с JMockit 1,5 и 2,2 Robolectric] (http://stackoverflow.com/q/20080978/16487). –

ответ

2

Я столкнулся с той же проблемой, и эта проблема, кажется, что тест бегун Robolectric мешает интеграции JMockit-JUnit. См. this.

+0

Кажется, мы с вами сталкиваемся с множеством тех же проблем. Если у вас есть шанс, пожалуйста, присоединитесь ко мне в [Android Unit Testing] (http://chat.stackoverflow.com/rooms/44241/android-unit-testing). Если меня нет, просто используйте '@ C.Ross', чтобы пинговать меня. –

1

Ошибка: Ошибка при запуске maven с Jmockit и junit в проект java.

СООБЩЕНИЕ: JMockit не был правильно инициализирован; проверить, что jmockit.jar предшествует junit.jar в пути к классам (при использовании JUnit, если нет, то обратитесь к документации)

ПРИЧИНЫ:

Неправильно настроенные в файл pom.xml. Jmockit dependencyis после junit.

РЕШЕНИЯ:

Редактировать файл pom.xml. Jmockit.jar должен предшествовать junit.jar, тогда зависимость jmockit должна быть до junit.

(всегда ставит перед тем JMockit из JUnit)

Смежные вопросы