我正在测试一个在方法中调用其他几个void方法的void方法(所有这些方法都在同一个类中)。这种方法就是这样......
public void methodToTest() {
methodA();
methodB();
}
void methodA() {
methodA1();
methodA2();
methodA3();
}
我想做的是让methodA()
以上无所作为。也就是说,我希望methodA()
基本上是这样的:
void methodA() { }
我在doThrow()
上尝试doAnswer()
和methodA()
都无济于事。就好像这些都被完全忽略了一样。
我尝试过的一个例子......
doThrow(new RuntimeException()).when(mockedClass).methodA();
有没有办法只使用Mockito?我无权改变正在修改的课程。
答案 0 :(得分:20)
如果你想让methodB仍然执行,而methodA什么都不做。这样就可以了:
TestClass spy = spy(new TestClass());
doNothing().when(spy).methodA();
spy.methodToTest();
答案 1 :(得分:0)
@Mock
ApplicationClass applicationClass;
Mockito.doNothing().when(applicationClass).myMethod(Matchers.any(Object.class));