java - 安卓模拟相机

标签 java android camera mocking mockito

是否可以模拟 Android Camera 类?

@Override
public void setUp() {
    _camera = Mockito.mock(Camera.class);
}

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

我是否应该在 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

最佳答案

答案来晚了,但这里有一个适用于 Android 的模拟相机示例。

您可以将 VideoFileInputSource 设置为从视频文件模拟相机

textureVideoInputSource = new VideoFileInputSource(this, "mock_input_video.mp4");

或者您可以为视频流启用硬件摄像头。

textureVideoInputSource = new CameraTextureVideoInputSource(this);

您可以在此处找到完整的示例项目。 https://github.com/muneikh/MockCamera

关于java - 安卓模拟相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18572130/

相关文章:

java - Android中修改APK的部分smali代码后如何定位注册问题?

arduino - 任何可用于 ESP32-cam 'Brownout detector was triggered' 错误的解决方案?

java - renameTo() 在 eclipse Helios 中不起作用

java - Android 图库在 ACTION_IMAGE_CAPTURE 后未更新

android - AppWidgetProvider 中的 updateAppWidget 不会导致更新

android - 在 Python 中导入 Android 库的 aar

android - 从相机获取输入而不显示它

ios - 从 Photos.app 获取最后一张图片?

java - 使用 SuperCSV 跳过 CSV 文件中的可选 header

java - 了解选项卡中从 Activity 到 fragment 的基本转换