列表的 Mockito 问题

Mockito issue with List

我有一个 DAO 方法,它 returns 一个列表。

现在我试图在我的服务层中模拟这个 DAO class 但是当我调用 DAO 方法时,即使我已经模拟了 DAO 方法,它还是给了我一个空 下面是示例代码片段,

public class ABCTest {

@InjectMocks
ABC abc = new ABC();   

@Mock
private ABCDao dao;

@Before
public void setUp() {
    MockitoAnnotations.initMocks(this);
    dao = Mockito.mock(ABCDao.class);
    Mockito.when(dao.getListFromDB()).thenReturn(Arrays.asList("1","2","3"));
}

@Test
public void testServiceMethod() {
    abc.serviceMethod();  // Inside this method when the DAO method is called, it is giving me an empty list even though I have mocked it above.
}

任何指点都会有所帮助

  1. 不要使用 MockitoAnnotations.initMocks(this); 而是使用 @RunWith(MockitoJunitRunner.class)
  2. 您正在调用 dao = Mockito.mock(ABCDao.class),它会覆盖 MockitoAnnotations.initMocks(this)
  3. 创建的 dao
  4. ABC 中的 ABCDao 实例现在不同于测试用例的 dao 成员。

我只能假设以下操作会失败:

assertTrue(dao == abc.getDao())

解决方法:删除下面一行

dao = Mockito.mock(ABCDao.class);