单元和 UI 测试的模拟最终 类

mock final classes for both unit and UI tests

我正在尝试为我的 android 应用编写单元和浓缩咖啡 UI 测试,使用 kotlin 构建。由于在 kotlin 中每个 class 默认情况下都是最终的,所以为了模拟最终的 class 我使用了支持模拟最终 classes 的 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 测试的最终 classes

我们无法像官方问题跟踪器 here

中提到的那样使用 mockito 内联插件模拟最终 类 用于 UI 测试(Android 测试)

背后的原因是

"There is no real possibility to make this work in Android at the moment as it lacks the instrumentation API on top of which we are operating. The Android VM is not a standard VM and only implements a subset of the Java specification. As long as Google does not choose to extend its JVM, I am afraid that this feature will not work."

如前所述here

为 android 测试模拟最终 类

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

  • 我们也可以使用 Kotlin Open Plugin 使所有最终 类 打开而无需显式打开关键字。