Java 项目自动生成单元测试插件推荐

一 单元测试的优缺点

优点:

1 帮助开发人员编写代码,提升质量,减少bug.比如说写代码是没有考虑到某些case条件或者边际条件,其中很重要的一个原因是我们思考不足,而编写单元测试.特别是提前编写单元测试可以减少这类问题的出现

2 提升反馈速度,减少重复工作,提高开发效率.通过单元测试验证代码比通过发布应用以人工的方式来验证代码要快得多

3保证代码修改不会破坏之前的代码功能,当然要达到这点需要比较高的测试覆盖率和编写质量

4 让代码维护更容易,单元测试代码像是规格说明书

5 有助于改进代码质量和设计.虽然单元测试并不能直接提升代码质量和设计,但它为生产代码提供了"安全网",让开发人员可以勇敢安全的修改生产代码,从而获得更好的质量和设计

缺点:

1 单元测试的学习成本比较高,编写单元测试设计的技术很多,如果只是单纯的使用Junit或者TestNG这样的基础框架难以应对各种复杂的单元测试情况,势必借助很多三方框架和技术(EasyMock,Jmock,DBunit等),增加学习成本

2 增加了编写和维护单元测试的工作量

3 推广和运用单元测试需要比较大的投入.只有在每个开发人员都编写的足够的,质量好的单元测试代码,我们才能享受到单元测试带给我们的好处,在达到这种程度以前,需要不少的投入

为解决此缺点此处讨论下市面上针对java的自动生成单元测试工具

* 需要明确的是:自动生成单元测试工具并不能完全解决上述三个缺点,只能降低学习成本,减少编写和维护单元测试的工作量,减少投入

                       自动生成单元测试工具生成的单元测试质量的高低将直接决定可以解决多少上述的三个问题.

       所以技术选型时,将自动生成单元测试工具生成的单元测试质量作为第一考虑因素

 

二 自动生成单元测试工具 

1 EvoSuite

优点: 暂无

缺点: 社区支持少,配置麻烦.官网很简陋.

 

2 TestMe

优点:快捷,简单,会对需生成测试类的方法中调用的每一个都生成测试类

缺点: 需手动填充出入参和逻辑生成的只是一个

 

 

 

3 Squaretest

优点: 暂无

缺点: 30天免费,无社区版

 

 4  diffblue cover

优点: 功能强大,社区支持丰富

缺点: 官网不支持国内访问,最新版本不支持JDK版本1.8.0_161以下的,idea2022.1版本以下的,商用版本收费昂贵,不支持mybatisPlus写法

解决方法:FQ,升级idea和JDK,使用社区版,生成后手动处理一下

综上考虑,最后选择了diffblue cover作为单元测试生成工具

三 使用diffbule的优缺点

优点:

1 可快速得到完整的单元测试代码

缺点:

1 增加学习成本和短期的开发成本

2 新增代码覆盖率工作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章