服务类方法的代码覆盖率

时间:2018-08-13 04:50:15

标签: java unit-testing junit mockito code-coverage

我正在尝试使用Mockito对服务类的方法进行代码覆盖。我不熟悉Mockito,并尝试模拟对service方法的调用,但是代码覆盖率为0。我不确定我是否可以模拟调用,或者我可以针对此特定方法进行模拟。如果您有任何建议,请让我知道。 代码:

public List<Something> getTrackerData(String startDay,List<Something> someList,  boolean check,String name)
{
//filled with many if else checks
}

这是我要覆盖的方法。

@InjectMocks     私人TrackerService trackerService;

@Before
public void setup(){
    MockitoAnnotations.initMocks(this);
}

@Test
    public void test01()
    {
        Something ttd =new Something();
        ttd.setCoverageSubType("None");
        ttd.setCoveredAmount("1.0");
        List<Something> list = new ArrayList<>();
        list.add(ttd);

        List<Something > newlist = mock(List.class);
//      when(trackerService.getTrackerData("", newlist, false, "")).
//      thenReturn(list);

        resultList = trackerService.getTrackerData(anyString(), anyList(), anyBoolean(), anyString());

    }

这是我写的测试。我意识到when和Mockito.verify()仅适用于模拟的依赖项。但是在这里,我没有任何依赖可以模拟。因此,问题是我可以使用Mockito存根参数模拟对trackerService.getTrackerData()的调用,还是只需要使用实际参数来测试该方法?

1 个答案:

答案 0 :(得分:1)

TrackerService已在使用InjectMocks。因此,您只需使用Mockito.when()。

List<Something> result = new ArrayList();
//populate list
Mockito.when(trackerService.getTrackerData(anyString(), anyList(), anyBoolean(), anyString())).thenReturn(result);