public class Foo {
private BarFactory barFactory;
public Foo(BarFactory factory) {
this.barFactory = factory;
}
public void foo() {
service();
Bar bar = this.barFactory.createBar();
bar.someMethod();
}
public void service(){
//Performs some service
}
}
Foo foo = new Foo(myFactory);
@Test
public void testDoFoo() {
Bar bar = mock(Bar.class);
foo.foo();//service() method throws an exception
verify(bar, times(1)).someMethod();
}
我必须验证 bar.SomeMethod() 已经运行过一次,但是 service() 方法在 UT 中执行 foo() 方法时抛出错误。有没有办法只测试 bar.SomeMethod() 忽略 UT 中的服务方法。 我不需要测试 Service() 方法。
答案 0 :(得分:0)
Mockito
有一个 doNothing
方法,可以让您将 void 方法设置为什么都不做。
见下面的例子:
@RunWith(MockitoJUnitRunner.class)
public class FooTest {
@Spy
@InjectMocks
private Foo foo;
@Mock
private BarFactory myFactory;
@Mock
private Bar bar;
@Test
public void testDoFoo() {
doReturn(bar).when(myFactory).createBar();
doNothing().when(foo).service();
foo.foo();
verify(bar, times(1)).someMethod();
}
}