Как я могу заставить Mockito работать в androidTestAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как я могу заставить Mockito работать в androidTest

Сообщение Anonymous »

Как я могу высмеять написанный мной класс в своем тесте?

Вот мой тестовый код:

import android.support.test.runner.AndroidJUnit4;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

@RunWith(AndroidJUnit4.class)
public class SampleTest {
@Mock
Sample mySample;

@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}

@Test
public void shouldMockSample() {
verify(mySample, never()).neverCallMe();
}

}


Sample — это всего лишь фиктивный класс.

public class Sample {

public void neverCallMe() {}
}


Как избавиться от этой ошибки?


java.lang. VerifyError: org/mockito/cglib/core/ReflectUtils в
org.mockito.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167)
at
org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
в
org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)
at
org.mockito.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
в org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:117) в
org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109) в
org.mockito. cglib.core.KeyFactory.create(KeyFactory.java:105) в
org.mockito.cglib.proxy.Enhancer.(Enhancer.java:70) в
org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass(ClassImposterizer.java:95)
в org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:57)
at
org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:49) в
org.mockito.internal.creation.cglib.CglibMockMaker.createMock(CglibMockMaker.java:24)
на org.mockito.internal.util.MockUtil.createMock(MockUtil.java:33) на
org.mockito.internal.MockitoCore.mock(MockitoCore.java:59) по адресу
org.mockito.Mockito.spy(Mockito.java:1368)

в java.lang.reflect.Method.invokeNative(собственный метод) в
java.lang.reflect.Method.invoke(Method.java:515) в
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
в
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosically(FrameworkMethod.java:47)
в
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) в org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) в
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
в
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
на org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) на
org.junit.runners.ParentRunner $1.schedule(ParentRunner.java:71) в
org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) в
org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) в
org. junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) в
org.junit.runners.ParentRunner.run(ParentRunner.java:363) в
org.junit.runners.Suite.runChild(Suite.java:128) в
org.junit .runners.Suite.runChild(Suite.java:27) в
org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) в
org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) в
org.junit.runners. ParentRunner.runChildren(ParentRunner.java:288) в
org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) по адресу
org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) по адресу
org.junit.runners. ParentRunner.run(ParentRunner.java:363) в
org.junit.runner.JUnitCore.run(JUnitCore.java:137) по адресу
org.junit.runner.JUnitCore.run(JUnitCore.java:115) по адресу
android.support.test.internal. runner.TestExecutor.execute(TestExecutor.java:54)
в
android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:228)
на
android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1741)

java.lang.NoClassDefFoundError:
org/mockito/internal/creation/cglib/ClassImposterizer$3 в
org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass(ClassImposterizer.java:95)
в
org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:57)
at
org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:49) в
org.mockito.internal.creation.cglib.CglibMockMaker.createMock(CglibMockMaker.java:24)
на org.mockito.internal.util.MockUtil.createMock(MockUtil.java:33) на
org.mockito.internal.MockitoCore.mock(MockitoCore.java:59) по адресу
org.mockito.Mockito.spy(Mockito.java:1368)

в java.lang.reflect.Method.invokeNative(собственный метод) в
java.lang.reflect.Method.invoke(Method.java:515) в
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
в
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosically(FrameworkMethod.java:47)
в
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) в org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) в
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
в
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
на org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) на
org.junit.runners.ParentRunner $1.schedule(ParentRunner.java:71) в
org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) в
org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) в
org. junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) в
org.junit.runners.ParentRunner.run(ParentRunner.java:363) в
org.junit.runners.Suite.runChild(Suite.java:128) в
org.junit .runners.Suite.runChild(Suite.java:27) в
org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) в
org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) в
org.junit.runners. ParentRunner.runChildren(ParentRunner.java:288) в
org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) по адресу
org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) по адресу
org.junit.runners. ParentRunner.run(ParentRunner.java:363) в
org.junit.runner.JUnitCore.run(JUnitCore.java:137) по адресу
org.junit.runner.JUnitCore.run(JUnitCore.java:115) по адресу
android.support.test.internal. runner.TestExecutor.execute(TestExecutor.java:54)
в
android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:228)
на
android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1741)


Я использую следующие зависимости в своем Gradle файл:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
androidTestCompile 'com.android.support:support-annotations:22.2.1'
androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'org.objenesis:objenesis:2.1'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'com.android.support.test:rules:0.3'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'org.hamcrest:hamcrest-library:1.3'
testCompile 'junit:junit:4.12'
testCompile 'org.robolectric:robolectric:3.0'
}


Подробнее здесь: https://stackoverflow.com/questions/319 ... ndroidtest
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»