【发布时间】:2019-02-13 15:08:23
【问题描述】:
我正在尝试使用 Mockito 编写单元测试。我有一个需要测试的类,如下所示-
open class Employee {
fun setDetails(name: String, age: Int) {
setName(name)
setAge(age)
}
fun setName(name: String) { }
fun setAge(age: Int) { }
}
下面是我的测试类
class EmployeeTest {
@Mock
lateinit var emp: Employee
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
}
@Test
fun testDetail() {
emp.setDetails("Henry", 23)
verify(emp, times(1)).setAge(23)
}
}
这是我的问题
当我这样做时-
verify(emp, times(1)).setAge(23)
这给了我一个成功,因为在 Employee.kt 的 setDetails() 中调用了一次 setAge。所以这对我来说很好
但是,当我这样做时-
verify(emp, never()).setAge(23)
这仍然给了我成功,即使在 setDetails() 中调用了该方法。这个测试用例不应该失败吗?
请帮助我理解这一点。我一直无法弄清楚为什么会发生这种情况。
编辑 这对我有用 我使用间谍而不是模拟。但是,我还必须将这些方法声明为在 Kotlin 中打开。
【问题讨论】:
标签: android testing junit kotlin mockito