我在 JUnit 测试中遇到异常,有没有办法控制它

时间:2021-02-03 14:03:36

标签: java spring junit mockito powermockito

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() 方法。

1 个答案:

答案 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();
    }

}