【问题标题】:Mockito mocks run actual Android code in Lollipop or greaterMockito 模拟在 Lollipop 或更高版本中运行实际的 Android 代码
【发布时间】:2017-05-21 07:14:33
【问题描述】:

所以我有一个数据库类,它有一个扩展 SQLOpenHelper 的依赖项,我正在使用 Android 检测测试和 Mockito 来模拟依赖项。我们注意到,Mockito 在执行Mockito.mock(class) 时实际上并没有模拟实现,而是实际代码正在运行并如我们预期的那样抛出空指针异常。在 API 19 设备上,测试按预期运行,并且模拟工作正常。

有人有什么建议或尝试吗?我已经尝试过具有类似结果的真实设备和模拟器。这可能是 Mockito 问题还是 dex-maker 问题?我在搜索时没有找到任何信息。

经过更多测试后,我用 Mockito 模拟的任何类实际上只是使用了实现。这是我的依赖项

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

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

【问题讨论】:

  • 请添加一些测试示例代码。另外,我假设您在谈论 InstrumentedUnitTests (androidTest),对吧?
  • 没错。我会得到一些示例代码。但无论我尝试模拟什么,Mockito 创建实例但执行实际代码,但仅在 >=API21 上且仅针对此项目,其他应用程序 Mockito 似乎工作正常。
  • MCVE 可能会有所帮助
  • 澄清一下,您是否尝试过this question中的步骤?
  • 我确实尝试了该解决方案,但没有效果。我将努力一起获得 MCVE

标签: android unit-testing mockito dexmaker


【解决方案1】:

所以摆脱我们旧的 Mockito 依赖项和 dexmaker 并使用新的:Mockito-android

修复了我们的问题

【讨论】:

    猜你喜欢
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多