当UnitTesting函数时,当你模拟它使用的函数时,最佳实践是什么

时间:2018-04-26 13:37:30

标签: android unit-testing kotlin mockito

我有一个函数X,函数使用函数Y.当我测试X时,我应该模拟Y来返回我想要的值,或者我应该让它调用真实方法并让它计算值。

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

OR

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

1 个答案:

答案 0 :(得分:2)

您正在测试X产生的逻辑。因此,你不关心Y实际在做什么,而是想要传递你的价值观#34;确保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()返回1时,X()返回false。但是当Y()被模拟返回2时,X()会返回true

因此,要回答您的问题,请使用

Mockito.when(Y).thenReturn(1)

并确保X()返回false