当前位置: 首页 > 面试题库 >

Android模拟相机

朱炜
2023-03-14
问题内容

可以模拟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应用程序的税。



 类似资料:
  • 问题内容: 如何以编程方式模拟Droid上的按键?我想模仿一个手动按键(在机器人上显示有人正在按某个按键,但是这是通过编程方式完成的)。 有涉及的解决方案,但是在新的SDK中已经不再是选择。 问题答案: 您可以使用检测,即,从活动的onCreate调用的以下代码将导致菜单多次打开和关闭: …但是我不确定这是否是你所追求的

  • 当我试图在启用gpu仿真的模拟器上运行OpenGLES 2应用程序时,我不断地得到这个错误: 创建上下文0x3005仿真程序失败:警告:无法使用软件呈现器初始化OpenglES仿真。无法获取wglGetExtensionsStringARB无法获取wglGetExtensionsStringARB无法获取wglGetExtensionsStringARB无法获取wglGetExtensionsSt

  • 我是一个新的android,当我点击运行按钮创建AVD时,它出现如下,我不能理解它说什么,请帮助我理解它是什么意思,我如何解决这个问题 C:\users\neil\appdata\local\android\sdk2\tools\emulator.exe-avd Nexus_S_API_21-netspeed full-netdelay none使用参数创建文件系统:无法获取wglGetExten

  • 本文向大家介绍android-studio 测试模拟器,包括了android-studio 测试模拟器的使用技巧和注意事项,需要的朋友参考一下 示例 如果没有特定需求,请选择x86_64带有Google API的系统映像来创建模拟器。 它的工作方式比armeabi-v7a基于Intel x86 x64的计算机快。 有一些使用ARM体系结构编译和设计的SDK库。 如果您尝试将它们安装在基于Intel

  • 我想使用Ubuntu 16.04在Android emulator上启动React本机应用程序。按照react原生文档,它应该通过运行 或 出于某种原因,没有sudo,这两个命令都无法工作,但这不是问题。问题是每次我遇到同样的错误时都会运行它们: 运行adb出错:找不到Android设备。请连接设备,并按照此处的说明启用USB调试:https://developer.android.com/stu

  • 我正在尝试使用PC的内置网络摄像头在我的Android应用程序中拍照。我正在使用 eclipse Android 模拟器,并将 AVD 设置为使用 webcam0 作为后置摄像头,但是当我运行我的程序时,它总是崩溃,说“不幸的是,相机已停止”。我已将以下行添加到我的清单 xml 中: 尽管它似乎仍然不起作用。我在一些地方读到过,在AVD管理器的编辑/创建界面中应该有一个“硬件”部分,但是我的没有。