我正在尝试使用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()
的调用,还是只需要使用实际参数来测试该方法?
答案 0 :(得分:1)
TrackerService已在使用InjectMocks。因此,您只需使用Mockito.when()。
List<Something> result = new ArrayList();
//populate list
Mockito.when(trackerService.getTrackerData(anyString(), anyList(), anyBoolean(), anyString())).thenReturn(result);