2016-08-28 2 views
2

Я успешно использовал Mockito в своем проекте, затем решил добавить некоторые тесты эспрессо (как описано здесь: https://developer.android.com/training/testing/ui-testing/espresso-testing.html#build), и я застрял - когда я добавляю эспрессо в мой build.gradle и я получить проблемы с Mockito.Исключение Mockito, когда Espresso добавлен в проект

Мои зависимости в build.gradle, когда Mockito работает нормально, например. мои тесты, которые используют Mockito проходят:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    testCompile 'junit:junit:4.12' 
    //Mockito framework 
    testCompile 'org.mockito:mockito-core:1.10.19' 
    // https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 
    testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: '1.6.4' 
    testCompile 'org.powermock:powermock-api-mockito:1.5.5' 
    androidTestCompile ('com.android.support:support-annotations:23.4.0') 
    //androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.2') 
} 

Когда я раскомментировать последнюю строку включать com.android.support.test.espresso: эспрессо-ядро: 2.2.2 и я бегу мои тесты снова я получаю следующее сообщение об ошибке для некоторых из них:

java.lang.IllegalAccessError: class org.mockito.internal.creation.jmock.ClassImposterizer$1 cannot access its superclass org.mockito.internal.creation.cglib.MockitoNamingPolicy 

    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at org.mockito.internal.creation.jmock.ClassImposterizer.<clinit>(ClassImposterizer.java:38) 
    at org.mockito.internal.creation.CglibMockMaker.createMock(CglibMockMaker.java:23) 
    at org.powermock.api.mockito.internal.mockmaker.PowerMockMaker.createMock(PowerMockMaker.java:43) 
    at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:33) 
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:59) 
    at org.mockito.Mockito.spy(Mockito.java:1368) 
    at todolistj.todolist.unittest.CustomClass.size(CustomClass.java:54) 

всех тестов, которые не имеют неудовлетворительные либо на Mockito.spy или Mockito.mock методов. Что-то вроде:

CustomClass1 li1 = Mockito.spy(new CustomClass1(somevar)); 

или

View vm= Mockito.mock(View.class); 

Любая помощь будет оценен по достоинству!

+2

Кажется, ваша версия Power mock слишком стар. https://github.com/spring-projects/spring-boot/issues/2606 –

+1

Это не проблема с mockito, но с powermock – piotrek1543

+0

Спасибо большое! Это было замечательно. Изменение org.powermock: powermock-api-mockito до 1.6.4 исправил проблему! Если вы опубликуете это как ответ, я воспользуюсь. – Jeni

ответ

2

Это не проблема с Mockito, но с Powermock, что зависит от старой версии Mockito.

Обновить эту библиотеку зависимостей или исключить mockito от Powermock gradle dependencies.

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

  • Нет связанных вопросов^_^