我编写了一个测试来验证我的类中的公共方法是否被调用。我的测试失败如下。谁能告诉我为什么会这样呢?
想要但未被调用:`mockMyClass.runThis();
实际上,这个模拟没有互动。
class MyClass{
public void myMethod(){
runThis("hello");
}
}
public void runThis(String str){
return;
}
测试课
@Mock
MyClass mockMyClass;
MyClass myClass = new MyClass();
@Test
public void test(){
myClass.myMethod();
verify(mockMyClass).runThis(anyString());
}
答案 0 :(得分:2)
你没有调用 mock ,而是真正的类。您需要生成一个模拟,然后在该模拟上调用。尝试类似:
MyClass mock = mock(MyClass.class); // I'm using the methods rather than annotation here
mock.myMethod();
并断言。我不太确定上面runThis()
的位置。如果它在一个包含的类上,那么那是需要模拟的东西。如果它在同一个类上,那么你本身就不能使用 mock ,因为mock会替换所有功能,也许Mockito spy()
机制在这里会有用。 S ection 13 of the doc就此提出了更多建议。