android - 当对函数进行单元测试时,当您模拟它使用的函数时,最佳实践是什么

标签 android unit-testing kotlin mockito

<分区>

我有一个函数 X,该函数使用函数 Y。当我测试 X 时,我应该模拟 Y 以返回我想要的值,还是应该让它调用真正的方法并让它计算值。

fun X_test(){
    Mockito.when(Y).thenReturn("value")
    ...
}

fun X_test(){
    Mockito.when(Y).thenCallRealMethod()
    ...
}

最佳答案

您正在测试 X 生成的逻辑。因此,您不关心 Y 实际上在做什么,而是想传递“您的值”以确保 X 的输出是正确的。

以这个非常基本的例子为例:

fun Y(): Int {
  return System.currentTimeMillis()
}

fun X(): Boolean {
  val time = Y()
  return (time % 2 == 0)
}

您要测试的是,如果时间为偶数毫秒,X() 实际上会返回 true。因此,您将模拟 Y() 以返回“简单”值,例如 0、1、2、3 等。并且您将确保当 Y()返回 1X() 返回 false。但是当 Y() 被模拟为返回 2 时,X() 将返回 true

所以要回答你的问题,你会使用

Mockito.when(Y).thenReturn(1)

并确保 X() 返回 false

关于android - 当对函数进行单元测试时,当您模拟它使用的函数时,最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50044472/

相关文章:

android - 是否可以更改图标在 FAB 上的位置?

c++ - Visual Studio 2012 缺点/优点的单元测试框架

android - 如何将onClick,onLongClick和onTouch实现到一个 View

generics - 字段的 setter 被类型投影删除

android - 项目分隔符的警报对话框问题

android - SKMaps 2.5.1 的导航建议始终为英文

android - 为谷歌地图中的不同城市选择合适的缩放级别

javascript - Jasmine 测试对象在 Ajax 方法 spy 调用上的状态

c# - 使用 InternalsVisibleTo 测试私有(private)成员

java - 如何在 Kotlin 中使用游标加载器