【问题标题】:mock final classes for both unit and UI tests模拟单元测试和 UI 测试的最终类
【发布时间】:2019-06-06 22:00:02
【问题描述】:

我正在尝试为我的 android 应用程序编写单元和 espresso UI 测试,使用 kotlin 构建。因为在 kotlin 中,每个类默认都是 final 的,所以为了模拟 final 类,我使用了支持 mocking final 类的 mockInline 库。 因为我必须同时编写单元测试和 UI 测试。我通过以下方式添加了库

testImplementation 'org.mockito:mockito-inline:2.13.0'
androidTestImplementation 'org.mockito:mockito-inline:2.13.0'

但是在运行 UI 测试时它正在抛出

More than one file was found with OS independent path 'mockito-extensions/org.mockito.plugins.MockMaker'

有没有办法使用 mockInline 库来模拟单元测试和 UI 测试的最终类

【问题讨论】:

  • 我不会使用带有插件的 mocktio 来测试 Kotlin,而是使用为 Kotlin 编写的模拟框架,例如 mockk.io
  • 您尝试过使用 PowerMockito 吗?
  • 谢谢,但我仍在寻找是否有一种方法可以将 mockito-Inline 库用于两个测试。当然,PowerMickito 和 mockk.io 是最后的选择。

标签: java android kotlin mockito ui-testing


【解决方案1】:

我们无法使用官方问题跟踪器here 中提到的 mockito 内联插件来模拟 UI 测试(Android 测试)的最终类

背后的原因是

“目前在 Android 上没有真正的可能使这项工作 时刻,因为它缺少我们在上面的检测 API 操作。 Android VM 不是标准 VM,仅实现了一个 Java 规范的子集。只要谷歌不选择 扩展它的JVM,我怕这个功能不行。”

如上所述here

模拟 android 测试的最终类

  • 我们可以使用 DexOpener 库来模拟 Android 中的最终类。

  • 我们也可以使用Kotlin Open Plugin,它可以让所有最终类在没有明确的 open 关键字的情况下打开。

【讨论】:

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