2

我需要在 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)
4

2 回答 2

2

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

于 2013-05-24T21:01:32.970 回答
1

出于文档目的,如果您使用的是 KitKat 并且 ibarbarisi 的答案不起作用,请撤消所有操作并确保您使用的是 Dalvik 而不是 ART。看来您无法使用 ART 运行检测。

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

于 2014-04-01T20:43:02.767 回答