Mockito问题与列表

时间:2015-07-30 07:40:27

标签: java arraylist mockito dao

我有一个返回List的DAO方法。

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

公共课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 个答案:

答案 0 :(得分:1)

  1. 请勿使用MockitoAnnotations.initMocks(this);使用@RunWith(MockitoJunitRunner.class)代替
  2. 您正在呼叫dao = Mockito.mock(ABCDao.class),其覆盖dao
  3. 创建的MockitoAnnotations.initMocks(this)
  4. ABC中的ABCDao实例现在与测试用例的dao成员不同。
  5. 我只能假设以下内容会失败:

    assertTrue(dao == abc.getDao())
    

    解决方案:删除以下行

    dao = Mockito.mock(ABCDao.class);