idea 单元测试插件

idea 单测试插件

idea 单元测试插件

今天来介绍一款工具Squaretest,它是一款自动生成单测试的插件,会用到它也是因为最近公司上了代码质量管控的指标,会考评各个项目的单测试覆盖率,以及sonar扫描出来的各种问题。

很多老项目老代码,或者着急交付的项目,单测试严重缺失,覆盖率只有5%不到,所以几个小伙伴这几天就在疯狂的堆单测试,3个人堆了2天才堆到30%,于是我也来上手帮忙写了两个,写到第二个的时候就发现,这个活不应该是人干的,要去看原来的代码,然后根据逻辑写各种Mock,感觉是有迹可循的东西,所以就查了下,发现果然有插件帮我们来干这个事情,那么解下来就来看看。

我使用的是idea,我们先来下载一下插件,,搜索Squaretest,然后install就好了,插件安装完成后需要重启一下

idea 单元测试插件

重启之后,菜单栏就多了一项Squaretest,下面我们来讲下怎么用,大家也可以通过看这个菜单的最后一项:来看它的一个演示,但演示不太全,我下面截图给大家看下我怎么用的,以及一些使用心得。

idea 单元测试插件

首先我们打开一个类,这个类就是我们即将要作为实验的类,这个类有7个public方法,因为Squaretest生成的单测试方法都是只能生成public的,当然这也是合理的嘛!毕竟private的肯定被public调用了。

idea 单元测试插件

如果我们来手写这个类的单测试,光看都要一会,下面看我操作,打开你的类,光标定位到代码里,右击鼠标选择Generate…

idea 单元测试插件

然后你就会看到这里有两个熟悉的图标,第一次的话选择第二个选项,它会让你选择你一下单测试的模板,因为我已经选择过了,所以我现在演示不回再弹出,但后面我会告诉你怎么更改模板。

idea 单元测试插件

选择第二项后就会弹出一个框看下面这里它自动会识别出当前类需要Mock的成员变量,直接点ok

idea 单元测试插件

自动会使用类的真实目录层次在test文件夹中创建出来一个单测试类,类名就是原类名后加Test

idea 单元测试插件

我把代码贴出来给大家看看它生成出来的是什么样的,看看吓不吓人,牛逼牛逼,7个单测试方法,秒秒钟就出来了,各位看官你们自己写要多久能写出来,毕竟时间就是金钱啊!然后我们执行一把试试!


 报错了呢,不要慌,这个断言是为了检查你单测试跑出来的结果是否符合预期的,如果你不想检查只想完成覆盖率,直接干掉就可以了(手动狗头)。

idea 单测试插件idea 单元测试插件

怎么样!刺不刺激,爽不爽,秒秒钟90多行的代码覆盖率就到了90%以上。

idea 单元测试插件

上面说过第一次进来会让你选择单测试的模板,如果你要切换的话可以在单测试类中按快捷键,Alt+M,或者通过Squaretest的菜单倒数第二个,下面这个就是按快捷键的效果,我选择的是这个模板,你们也可以借鉴。

idea 单元测试插件

OK,以上Squaretest部分就结束了,当然拉也不能高兴的太早,这个类算是比较成功的情况,很多时候还是要你自己小修小改的,毕竟它生成出来的测试数据可能完全匹配不上你的if else数据对吧,但这都很好改啊,这样就从自己分析if else变成了,debug程序了呀,哪里报错,debug过去,看看是不是生成的数据有问题,改个数据,就通过了,反正本人用的是很舒畅的,妥妥的节省70%的工作量。

解决了上面一个问题之后,又发现另一个问题,这个工具这种实体类来讲,一般这种实体类我们都用lombok的注解,还有constract构造器等注解,但是这个工具只能生成这些实体类的构造器的单测试,无法生成get set方法的单测试,所以写了个base方法,实体类继承一下,简单的写两行带就好了,看下面代码:


同样的方式我们在实体类上通过Squaretest生成单测试,然后继承我上面写的那个base类,vo的单测试代码稍加改动,如下

idea 单元测试插件

看run完之后,覆盖率100%,妥妥的,通过这两个解决方案,一天之内我们就把覆盖率搞到了60%以上,不要太刺激,大家可以用用试试哦,当然这个也不是纯为了应付差事写的单测试,我们后续开发的时候,也可以用这个工具来生成,然后自测自己的代码,这样也是提升工作效率的嘛!

idea 单元测试插件 

今天的文章
idea 单测试插件分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/132978.html

(0)
编程小号编程小号
上一篇 2024-09-08 15:17
下一篇 2024-09-08 15:46

相关推荐