有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java测试调用mockito中对象的另一个方法的方法

我有一个接口,例如:

interface MyService {
  void createObj(int id)
  void createObjects()
}

我想测试createObjects方法的一个实现,它有如下主体:

void createObjects() {
  ...
  for (...) {
     createObj(someId);
  }
}

我已经测试了createObj(id)

@Test public void testCreate() {
  //given
  int id = 123;
  DAO mock = mock(DAO.class);
  MyService service = new MyServiceImpl(mock);

  //when
  service.createObj(id);

  //verify
  verify(mock).create(eq(id));
}

所以我不想在createObjects的测试中重复它的所有测试用例

除了我正在测试的方法外,如何确保调用了真实对象的另一个方法


共 (1) 个答案

  1. # 1 楼答案

    使用间谍:

    MyService myService = new MyServiceImpl()
    MyService spy = spy(myService);
    doNothing().when(spy).createObj(anyInt());
    
    // now call spy.createObjects() and verify that spy.createObj() has been called
    

    与其他内容一样,这在the api doc中进行了描述