启动实际方法调用Android UI测试时的模仿

问题描述 投票:2回答:3

我们有一个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

android mockito android-espresso android-testing
3个回答
0
投票

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

可能的解决方案:

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

0
投票

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

[doReturn(str).何时(localStorage).getString(anyString())

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.