即使在存根

时间:2016-04-07 14:19:34

标签: java unit-testing junit mockito

我有一些像这样的结构

...
SomeDao dao = getDAO(AttributeDAO.class);
CustomType type =dao.findByKey(typeOne, typeTwo, typeThree.toString());
if(type == null) {
    System.out.print("null returned");
} else {
    System.out.print("do something");
}
...

我的测试用例

...
        MainClass mc = Mockito.spy(new MainClass());
        CustomType type = new CustomType();
        SomeDao dao = Mockito.mock(AttributeDAO.class);
        type.setValueOne(1);
        type.setValueTwo(1);
        type.setValueThree("Y");
        Mockito.doReturn(type).when(dao).findByKey(1,2,"Y");

        mc.callThisDaoFunction();
...

但每当我尝试使用eclemma coverage工具返回类型时,它会继续说type == null我如何测试用例或设置类型以返回非空值?

1 个答案:

答案 0 :(得分:2)

您需要将 dao 模拟注入 MainClass 。否则,在调用 getDao(AttributeDAO.class)时,它仍会尝试检索真正的 dao

  • 如果有一个方法 setDao ,它只是用你的模拟调用它。
  • 当使用参数 AttributeDAO.class 调用 mc 时,返回 dao