idea代码测试覆盖率

2023-11-30 19:07:39 浏览数 (3)

前言

单元测试其实是检测代码最好的方式,单元测试,代码质量,这些都是很好的工具,单元测试需要结合mockito框架进行mock来测试,否则没用的数据写入到数据库里面也是占用空间,本身测试只是为了检查我的逻辑是否合理,流程是否通顺,判断是否到位。

代码语言:javascript复制
<dependency>
<groupId>org.mockito</groupId>
 <artifactId>mockito-all</artifactId>
 <version>1.10.19</version>
 <scope>test</scope>
</dependency>

步骤

运行单元测试覆盖

首先选中需要测试的类的方法

运行之后会有一份测试报告给出来

点击对应的类查看覆盖结果,红色表示没有覆盖,绿色表示覆盖到了。

测试报告

也可以选择导出测试报告会以html的形式放在某个指定的目录

打开index.html之后显示的内容与窗口看到一样

打开点开相应的类看到的结果也是一样,非常方便

mockito单元测试

当你碰到一个庞大且复杂的逻辑的时候,相信你一定很困惑,如何进行单元测试是个问题,因为你要不就直接从api接口一个接口一个接口调用,然后还依赖环境的支持,如果环境不友好比如别人也在用你就很难了,因为你不能把存在很多问题的代码部署到环境上面。

有需求就有市场,总有一些大佬会做一些事情,向前走了一公里,mockito框架应运而生,缝管你什么代码逻辑,都可以局部测试,很方便的处理的大部分不好单元测试的逻辑,你需要什么样的数据就造什么样的数据,非常方便还可以复用,下次修改动,只需要简单跑跑单元测试就好。非常nice

导入包

代码语言:javascript复制
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.10.19</version>
        <scope>test</scope>
    </dependency>
    <dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-inline</artifactId>
			<version>4.5.1</version>
			<scope>test</scope>
		</dependency>

用例代码

代码语言:javascript复制
@ContextConfiguration(classes = {EnableServerScheduleService.class, ServerDao.class})
@ExtendWith(SpringExtension.class)
class MonitorServiceRecordServiceDiffblueTest {
    @Test
    void testMonitorServiceAfterWork2() {
        SimpMessagingTemplate message = new SimpMessagingTemplate(mock(MessageChannel.class));
        message.setUserDestinationPrefix("getUU");
        ServerDao serverDao = mock(ServerDao.class);
        when(serverDao.findAllServer(Mockito.<String>any(), Mockito.<List<Integer>>any(), Mockito.<String>any(),
                Mockito.<List<String>>any())).thenReturn(new ArrayList<>());
        MonitorServiceRecordExtendDao monitorServiceRecordExtendDao = mock(MonitorServiceRecordExtendDao.class);
        RedisUtil redisUtil = new RedisUtil();
        (new MonitorServiceRecordService(monitorServiceRecordExtendDao, message, redisUtil, new SystemConfig(),
                serverDao)).monitorServiceAfterWork();
        verify(serverDao).findAllServer(Mockito.<String>any(), Mockito.<List<Integer>>any(), Mockito.<String>any(),
                Mockito.<List<String>>any());
    }
}

总结

测试覆盖查看还是很方便的,只是你要把每种情况都要考虑到,提供对应的代码示例去执行对应的代码块。不得不说idea这个测试报告还是挺友好的对与那些测试人员可以直观的看到测试覆盖的结果,对于开发人员也非常友好,直接看到那些代码覆盖到没有覆盖到。

引用

https://site.mockito.org/

最后

点赞关注评论一键三连,每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞