Mockito何时启动实际方法调用Android UI测试

我们有一个Configuration类和LocalStorage类Configuration在构造函数中使用LocalStorage实例,LocalStorage在构造函数中使用Context。我们只是尝试从UI测试开始。 我们正在尝试这样做

   private val localStorage = Mockito.mock(LocalStorage::class.java)

   // in our setup method
   Mockito.`when`(localStorage.getString(anyString())).thenReturn(str)

这里的问题是,运行测试时,getString()方法调用立即开始发生。我们甚至还没有编写实际测试。

Mockito Android版本:3.1.0

jsj07123 回答:Mockito何时启动实际方法调用Android UI测试

我认为在UI测试期间,在模拟最终Kotlin类中可能出了什么问题。看起来您在Mockito中使用插件来“打开”类。

可能的解决方案:

  1. 使LocalStorage成为接口,而不是类。 (SOLID的第五项原则,抽象/实现)。您的问题可能会消失,因为接口本质上是开放的。
  2. 使用Mockk库模拟您的LocalStorage和其他类。该框架对Kotlin更好。
,

您是否考虑过使用替代方法?

+何时doReturn(str).

(需要导入:导入org.mockito.Mockito.doReturn)

,

问题是我们的Application类正在初始化LocalStorage。如果先前已经初始化依赖项,则Mock失败。解决方案是使用TestApplication创建一个CustomAndroidJUnitRunner。确保相关性未预先初始化,而仅根据各自测试的要求进行初始化。

本文链接:https://www.f2er.com/3160465.html

大家都在问