在写testcases时,Mockito可以mock出相应的类,作为个人而言,觉得跟数据库打交道的service层很好用(因为直接跟数据库交流的是DAO层)。这样mock出来service就可以不关注数据层面只专注于业务层面了。
核心代码:
1、简单mock
newOrigSummonService = Mockito.mock(NewOrigSummonService.class);
supcIndvWriter.setNewOrigSummonService(newOrigSummonService);
mock出来后,记得在相应的类里用set方法注入进去,避免null pointer异常。
2、调用某个方法时,可以指定返回值。
Mockito.when(batchSeqNumService.getById(ApplicationConstants.ICMP_GENERATE_NRO_SEARCH_JOB, yearYYYY))
.thenReturn(null);
在调用batchSeqNumService的getById方法时,指定返回null。注意方法传的参数要和被测试的代码里的一致。
3、验证某个方法至少被调用一次或者从未被调用
Mockito.verify(newOrigSummonService, Mockito.atLeastOnce()).create(newOrigSummon);
Mockito.verify(hearingDetailService, Mockito.never()).create(hearingDetail);
当然,这肯定要写在要测试的代码运行之后。这里的create方法参数newOrigSummon和hearingDetail都是对象,也要和被测试的代码里一致,就我的经验而言至少值要是一样。