java—我在junit测试中遇到了一个异常,有没有控制它的方法

vybvopom  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(379)
  1. public class Foo {
  2. private BarFactory barFactory;
  3. public Foo(BarFactory factory) {
  4. this.barFactory = factory;
  5. }
  6. public void foo() {
  7. service();
  8. Bar bar = this.barFactory.createBar();
  9. bar.someMethod();
  10. }
  11. public void service(){
  12. //Performs some service
  13. }
  14. }
  15. Foo foo = new Foo(myFactory);
  16. @Test
  17. public void testDoFoo() {
  18. Bar bar = mock(Bar.class);
  19. foo.foo();//service() method throws an exception
  20. verify(bar, times(1)).someMethod();
  21. }

我必须验证bar.somemethod()是否运行过一次,但service()方法在ut中执行foo()方法时引发错误。有没有办法只测试bar.somemethod()而忽略ut中的服务方法。我不需要测试service()方法。

gj3fmq9x

gj3fmq9x1#

Mockito 有一个 doNothing 方法将void方法设置为不执行任何操作。
见下例:

  1. @RunWith(MockitoJUnitRunner.class)
  2. public class FooTest {
  3. @Spy
  4. @InjectMocks
  5. private Foo foo;
  6. @Mock
  7. private BarFactory myFactory;
  8. @Mock
  9. private Bar bar;
  10. @Test
  11. public void testDoFoo() {
  12. doReturn(bar).when(myFactory).createBar();
  13. doNothing().when(foo).service();
  14. foo.foo();
  15. verify(bar, times(1)).someMethod();
  16. }
  17. }
展开查看全部

相关问题