Eclipse中的Mockito 1.9.5 + Dexmaker在Eclipse中得到NoClassDefFoundError

时间:2013-04-25 22:17:43

标签: android eclipse unit-testing mocking mockito

我需要在Eclipse中测试Android上的一个应用程序。我制作了Android测试项目,并在此课程中。我需要一些模拟,所以我使用Mockito所以我添加到我的测试项目库中:mockito-all-1.9.5.jar,dexmaker-1.0.jar,dexmaker-mockito-1.0.jar

package metrocar.view.test;

import android.os.Handler;
import android.test.InstrumentationTestCase;
import static org.mockito.Mockito.*;

public class OBD2Test extends InstrumentationTestCase {

    public void testInStock() {
        Handler mHandler = mock(Handler.class);
    }
}

但是当我尝试在真实设备上运行它时,我得到了这个错误。我该如何解决?

java.lang.NoClassDefFoundError: org.mockito.Mockito
at metrocar.view.test.OBD2Test.testInStock(OBD2Test.java:12)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)

2 个答案:

答案 0 :(得分:2)

运行单元测试时,需要将您依赖的JAR(mockito)导出到运行测试的设备上。您可以在Eclipse中的类路径上使用mockito,因此您的测试可以编译,但这还不够。 Mockito似乎需要专门在你的Android测试项目下的libs目录中,它应该出现在你的Android依赖项中。

答案 1 :(得分:1)

出于文档目的,如果您使用KitKat并且ibarbarisi的答案无法解决,请撤消所有内容并确保您使用Dalvik而不是ART。它似乎无法运行ART仪器。

查看此问题以获取更多详细信息:INSTRUMENTATION_RESULT: shortMsg=java.lang.NoClassDefFoundError running Android Instrumentation tests