Android模拟相机

可以模拟Android Camera类吗?

@Override

public void setUp() {

_camera = Mockito.mock(Camera.class);

}

无法生成模拟(ExceptionInitializerError在Mockito中createProxyClass)。

我是否应该围绕Camera(不是我最喜欢的解决方案,真的想只模拟类…)创建某种包装器?

或者,我应该使用不同于Mockito的模拟库吗?

希望有人能指出我正确的方向。

的完整堆栈跟踪 ExceptionInitializerError

java.lang.ExceptionInInitializerError

at org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:85)

at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62)

at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:56)

at org.mockito.internal.creation.CglibMockMaker.createMock(CglibMockMaker.java:23)

at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)

at org.mockito.internal.MockitoCore.mock(MockitoCore.java:51)

at org.mockito.Mockito.mock(Mockito.java:1243)

at org.mockito.Mockito.mock(Mockito.java:1120)

at com.cleancode.lifesaver.flashlight.test.FlashLightTests.setUp(FlashLightTests.java:20)

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)

Caused by: java.lang.VerifyError: org/mockito/cglib/core/ReflectUtils

at org.mockito.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167)

at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)

at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)

at org.mockito.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)

at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:117)

at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)

at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:105)

at org.mockito.cglib.proxy.Enhancer.<clinit>(Enhancer.java:70)

... 18 more

回答:

在您的堆栈跟踪中,注意子字符串“ .CglibMockMaker”:这就是这里的问题。CGLib在android上不起作用-

有一个Mockito插件,专门用于使用dexmaker的android,类似于CGLib,但适用于dalvik。只需搜索dexmaker

Mockito,您应该在正确的道路上。

您仍然无法模拟Camera.open()(静态工厂方法),但是您可以围绕它重构代码。重要的是相机不是最后一堂课。其余的只是测试的尴尬,您应该将其作为编写经过良好测试的android应用程序的税。

以上是 Android模拟相机 的全部内容, 来源链接: utcz.com/qa/407563.html

回到顶部