<分区>
我有一个函数 X,该函数使用函数 Y。当我测试 X 时,我应该模拟 Y 以返回我想要的值,还是应该让它调用真正的方法并让它计算值。
fun X_test(){
Mockito.when(Y).thenReturn("value")
...
}
或
fun X_test(){
Mockito.when(Y).thenCallRealMethod()
...
}
<分区>
我有一个函数 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()
返回 1
,X()
返回 false
。但是当 Y()
被模拟为返回 2
时,X()
将返回 true
。
所以要回答你的问题,你会使用
Mockito.when(Y).thenReturn(1)
并确保 X()
返回 false
关于android - 当对函数进行单元测试时,当您模拟它使用的函数时,最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50044472/