Mockito模拟对象在Lollipop或更高版本上运行实际的Android代码

13

我有一个Database类,它依赖于一个继承了SQLOpenHelper的类。我正在使用Android仪器测试和Mockito模拟依赖项。我们注意到当使用Mockito.mock(class)时,Mockito实际上并没有模拟实现,而是运行了实际代码并抛出了NullPointerException异常,正如我们所预期的那样。在API 19设备上,测试按预期运行并且模拟工作正常。

是否有人有任何建议或尝试的事情?我已经尝试了真实设备和仿真器,结果类似。这可能是Mockito问题还是dex-maker问题?我在搜索中没有找到任何信息。

在进行了更多测试后,我发现使用Mockito模拟的任何类都只是使用其实现。以下是我的依赖关系:

androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'

注意:如果这会有任何区别,这也在一个库模块中。


请添加一些测试代码示例。另外,我假设您是在谈论InstrumentedUnitTests(androidTest),对吗? - David Rawson
没错。我会拿一些示例代码。但是无论我尝试怎样Mock,Mockito都会创建实例并执行实际的代码,但只有在 >=API21 中,而且只对这个项目有效,在其他应用程序中,Mockito似乎工作正常。 - Stampede10343
一个MCVE可能会有所帮助。 - David Rawson
只是为了澄清一下,你是否尝试过在这个问题中提到的步骤? - David Rawson
我尝试了那个解决方案,但没有任何效果。我将努力准备一个MCVE。 - Stampede10343
显示剩余3条评论
1个回答

7
所以,我们摆脱了旧的Mockito依赖和dexmaker,并使用新的Mockito-android解决了我们的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接