絮叨
最近项目中,每次Build的时候会触发sonar程序去扫描代码,打出测试覆盖率,也就是coverage。如果不到80%以上,就要去补Test case。可是我们在开发中怎么知道写的unit test的coverage是多少呢?这就要靠Idea的工具了。Idea自带一个默认代码覆盖率工具。当然我们也可以配置第三方,比如jacoco。本章讲的是Idea自带覆盖率扫描工具的使用。
正文
- 基于包级别的coverage。
- 首先找到我们写好的测试类,点击查看单元测试覆盖度。
- 如下图所示,默认会在右侧出现Coverage的框。
- 在里面打开某一个类后,可以看到哪些逻辑被覆盖到哪些逻辑没有被覆盖到,绿色的表示已经覆盖的地方,红色部分表示单元测试还没有覆盖的行。这样就方便我们在开发阶段去提高Coverage了。
- 大家也能看到,这样有个问题们就是基于包去扫描,如果我们的测试类很多,而我们只想看其中的几个的覆盖率,这样会花很多时间去扫描其他类上。所以我们可以通过配置的方法,让他只扫描一个类。
- 基于类级别的coverage
- 首先我们在Idea的上面找到Edit Configuration。
- 在左上角点击新加,选择Junit。
- 在新弹出的窗口Class处选择我们要运行的测试类
- 在Tab处,选择Code Coverage。
- 下面可以添加包和类,在右侧第一个加号,点击新家类,选择我们要扫面的类(此处选择的是测试类对应的类)。比如XXXServiceTest,在这里就选择XXXService。之后点击apply,点击ok。
- 选择我们刚才配置的Junit,然后点击右面的Run ‘XXX’ with Coverage。
- 可以在下面(右面)看到新弹出来的Coverage框,这次只有你刚才配置的类的Coverage。点击去也可以看到每一行的覆盖情况。
总结
本文介绍了Idea自带的覆盖率工具,它可以帮我们在开发阶段去查看我们代码的覆盖率。
如果你想看某一个包的覆盖率情况,可以在test目录下选中要测试的包,选择Run test ‘XXX’ with Coverage。这样就会扫描选中包的代码覆盖率。
如果你只想看一个类的覆盖率的话,那就看第二种方法去配置一个Run configurations。这样就会只扫描选中的类的代码覆盖率。
如果本篇博客有任何错误,请批评指教,不胜感激 !