public class CrawlerScreenShotServiceImplTest { @Mock private CrawerScreenShotTaskMapper mockCrawerScreenShotTaskMapper; @Mock private CrawerScreenShotTaskLogMapper mockCrawerScreenShotTaskLogMapper; @InjectMocks private CrawlerScreenShotServiceImpl crawlerScreenShotServiceImplUnderTest; @Before public void setUp() { initMocks(this); } @Test public void testReceiveData() { // Setup final CrawlerScreenShotVO vo = new CrawlerScreenShotVO(); vo.setUrl("url"); vo.setPcFlag(false); vo.setMembergroup("membergroup"); vo.setTaskType(0); vo.setUrlType(0); //堆代码 duidaima.com when(mockCrawerScreenShotTaskLogMapper.saveSelective(any(CrawerScreenShotTaskLog.class))).thenReturn(0); when(mockCrawerScreenShotTaskMapper.saveBatch(Arrays.asList(new CrawlerScreenShotTask(0L, "url", "imageOssUrl", false, false, "memberGroup", 0, 0, "fileName", new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime(), new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime(), false, "skuCode", "state", "operater")))).thenReturn(0); // Run the test final Result<String> result = crawlerScreenShotServiceImplUnderTest.receiveData(vo); // Verify the results } @Test public void testListJobScreenShotTask() { // Setup // Configure CrawerScreenShotTaskMapper.listJobScreenShotTask(...). final CrawlerScreenShotTaskDto crawlerScreenShotTaskDto = new CrawlerScreenShotTaskDto(); crawlerScreenShotTaskDto.setId(0L); crawlerScreenShotTaskDto.setUrl("url"); crawlerScreenShotTaskDto.setSkuCode("skuCode"); crawlerScreenShotTaskDto.setPcFlag(false); crawlerScreenShotTaskDto.setMemberGroup("memberGroup"); crawlerScreenShotTaskDto.setUrlType(0); crawlerScreenShotTaskDto.setFileName("fileName"); crawlerScreenShotTaskDto.setTaskType(0); crawlerScreenShotTaskDto.setState("state"); final List<CrawlerScreenShotTaskDto> crawlerScreenShotTaskDtos = Arrays.asList(crawlerScreenShotTaskDto); when(mockCrawerScreenShotTaskMapper.listJobScreenShotTask(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime())).thenReturn(crawlerScreenShotTaskDtos); // Run the test final List<CrawlerScreenShotTaskDto> result = crawlerScreenShotServiceImplUnderTest.listJobScreenShotTask(); // Verify the results } @Test public void testQuery() { // Setup final NikeScreenShotListRequestVo requestVo = new NikeScreenShotListRequestVo(); requestVo.setUrl("url"); requestVo.setUrlType(0); requestVo.setStartTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime()); requestVo.setEndTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime()); requestVo.setStatus(0); requestVo.setPcFlag(0); requestVo.setPageNum(0); requestVo.setPageSize(0); // Configure CrawerScreenShotTaskMapper.query(...). final PimScreenShotVo pimScreenShotVo = new PimScreenShotVo(); pimScreenShotVo.setId(0L); pimScreenShotVo.setUrl("url"); pimScreenShotVo.setImageOssUrl("imageOssUrl"); pimScreenShotVo.setStatus(0); pimScreenShotVo.setPcFlag(false); pimScreenShotVo.setCreateTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime()); pimScreenShotVo.setUrlType(0); pimScreenShotVo.setMsg("msg"); final List<PimScreenShotVo> pimScreenShotVos = Arrays.asList(pimScreenShotVo); when(mockCrawerScreenShotTaskMapper.query(any(NikeScreenShotListRequestVo.class))).thenReturn(pimScreenShotVos); // Run the test final PageInfo<PimScreenShotVo> result = crawlerScreenShotServiceImplUnderTest.query(requestVo); // Verify the results } @Test public void testQuerySelectBoxData() { // Setup // Configure CrawerScreenShotTaskMapper.query(...). final PimScreenShotVo pimScreenShotVo = new PimScreenShotVo(); pimScreenShotVo.setId(0L); pimScreenShotVo.setUrl("url"); pimScreenShotVo.setImageOssUrl("imageOssUrl"); pimScreenShotVo.setStatus(0); pimScreenShotVo.setPcFlag(false); pimScreenShotVo.setCreateTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime()); pimScreenShotVo.setUrlType(0); pimScreenShotVo.setMsg("msg"); final List<PimScreenShotVo> pimScreenShotVos = Arrays.asList(pimScreenShotVo); when(mockCrawerScreenShotTaskMapper.query(any(NikeScreenShotListRequestVo.class))).thenReturn(pimScreenShotVos); // Run the test final PimScreenShotTaskParamsDto result = crawlerScreenShotServiceImplUnderTest.querySelectBoxData(); // Verify the results } @Test public void testFindExecutionScreenShotTaskCount() { // Setup when(mockCrawerScreenShotTaskMapper.findExecutionScreenShotTaskCount()).thenReturn(0); // Run the test final Integer result = crawlerScreenShotServiceImplUnderTest.findExecutionScreenShotTaskCount(); // Verify the results assertEquals(0, result); } @Test public void testFindCrawerScreenshotTaskByCreateTime() { // Setup final CrawlerScreenShotTaskSyncDto crawlerScreenShotTaskSyncDto = new CrawlerScreenShotTaskSyncDto(); crawlerScreenShotTaskSyncDto.setId(0L); crawlerScreenShotTaskSyncDto.setUrl("url"); crawlerScreenShotTaskSyncDto.setSkuCode("skuCode"); crawlerScreenShotTaskSyncDto.setTaskType(0); crawlerScreenShotTaskSyncDto.setStatus(0); crawlerScreenShotTaskSyncDto.setLastModifyTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime()); crawlerScreenShotTaskSyncDto.setOperater("operater"); crawlerScreenShotTaskSyncDto.setMsg("msg"); final List<CrawlerScreenShotTaskSyncDto> expectedResult = Arrays.asList(crawlerScreenShotTaskSyncDto); // Configure CrawerScreenShotTaskMapper.findCrawerScreenshotTaskByCreateTime(...). final CrawlerScreenShotTaskSyncDto crawlerScreenShotTaskSyncDto1 = new CrawlerScreenShotTaskSyncDto(); crawlerScreenShotTaskSyncDto1.setId(0L); crawlerScreenShotTaskSyncDto1.setUrl("url"); crawlerScreenShotTaskSyncDto1.setSkuCode("skuCode"); crawlerScreenShotTaskSyncDto1.setTaskType(0); crawlerScreenShotTaskSyncDto1.setStatus(0); crawlerScreenShotTaskSyncDto1.setLastModifyTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime()); crawlerScreenShotTaskSyncDto1.setOperater("operater"); crawlerScreenShotTaskSyncDto1.setMsg("msg"); final List<CrawlerScreenShotTaskSyncDto> crawlerScreenShotTaskSyncDtos = Arrays.asList(crawlerScreenShotTaskSyncDto1); when(mockCrawerScreenShotTaskMapper.findCrawerScreenshotTaskByCreateTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime())).thenReturn(crawlerScreenShotTaskSyncDtos); // Run the test final List<CrawlerScreenShotTaskSyncDto> result = crawlerScreenShotServiceImplUnderTest.findCrawerScreenshotTaskByCreateTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime()); // Verify the results assertEquals(expectedResult, result); } @Test public void testQueryCrawlerDashboard() { // Setup when(mockCrawerScreenShotTaskMapper.queryCrawlerDashboard(0, 0, 0, new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime(), new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime())).thenReturn(0); // Run the test final Integer result = crawlerScreenShotServiceImplUnderTest.queryCrawlerDashboard(0, 0, 0, new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime(), new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime()); // Verify the results assertEquals(0, result); } }报错了呢,不要慌,这个断言是为了检查你单元测试跑出来的结果是否符合预期的,如果你不想检查只想完成覆盖率,直接干掉就可以了(手动狗头)。
@SpringBootTest @RunWith(MockitoJUnitRunner.class) public abstract class BaseVoEntityTest<T> { protected abstract T getT(); // 堆代码 duidaima.com private void testGetAndSet() throws IllegalAccessException, InstantiationException, IntrospectionException, InvocationTargetException { T t = getT(); Class modelClass = t.getClass(); Object obj = modelClass.newInstance(); Field[] fields = modelClass.getDeclaredFields(); for (Field f : fields) { boolean isStatic = Modifier.isStatic(f.getModifiers()); // 过滤字段 if (f.getName().equals("isSerialVersionUID") || f.getName().equals("serialVersionUID") || isStatic || f.getGenericType().toString().equals("boolean") || f.isSynthetic()) { continue; } PropertyDescriptor pd = new PropertyDescriptor(f.getName(), modelClass); Method get = pd.getReadMethod(); Method set = pd.getWriteMethod(); set.invoke(obj, get.invoke(obj)); } } @Test public void getAndSetTest() throws InvocationTargetException, IntrospectionException, InstantiationException, IllegalAccessException { this.testGetAndSet(); } }同样的方式我们在实体类上通过Squaretest生成单元测试,然后继承我上面写的那个base类,vo的单元测试代码稍加改动,如下
看run完之后,覆盖率100%,妥妥的,通过这两个解决方案,一天之内我们就把覆盖率搞到了60%以上,不要太刺激,大家可以用用试试哦,当然这个也不是纯为了应付差事写的单元测试,我们后续开发的时候,也可以用这个工具来生成,然后自测自己的代码,这样也是提升工作效率的嘛!