【Maven插件】自动生成Mock测试代码
primo-generator-mock-test
项目地址:
https://github.com/chenhaoxiang/primo
介绍
你还在为写大量单元测试而烦恼吗,你还在苦苦的构建包装类的值吗?这里有一款mock单元测试代码自动生成的Maven插件,解决开发人员消耗大量时间在单元测试的问题,全面优化开发人员的测试效率和测试时间。
注意,本插件目前无法完成所有的mock测试,让你不用修改一行代码,暂时需要在primo-generator-mock-test生成mock测试代码的基础上再进行一点修改,例如分支覆盖,断言使用。
本插件的目标是:实现让开发人员不再写一行mock测试代码,primo-generator-mock-test帮你全部实现
愿景是:减少开发人员的测试负担,专注业务开发与迭代
经过本人的亲自使用,外加我在团队的内部"推(qiang)广(tui)"使用,从统计来看,可以减少使用mock测试的小伙伴,至少30-50%的时间。
(此项目目前在我公司几个团队使用,节省了团队成员非常多的单元测试时间,在此分享出来)
使用
1. 首先依赖插件:
最新版本
最新版本:1.0.0
最简单配置:
<plugin> <groupId>wiki.primo.generator</groupId> <artifactId>primo-generator-mock-test-maven-plugin</artifactId> <version>(版本号)</version> <configuration> <testPackageName>(待测试类的包名,0.1.0-SNAPSHOT+支持配置多个,英文分号进行隔开)</testPackageName> </configuration> </plugin>
(使用最简单的配置,即可使用,感觉后面说明过多的不用往下看)
示例:
<plugin> <groupId>wiki.primo.generator</groupId> <artifactId>primo-generator-mock-test-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <testPackageName>wiki.primo.generator.primogeneratormocktestdemo.service.impl</testPackageName> </configuration> </plugin>
2. 生成测试代码
在引入插件的项目模块下运行maven插件的 primo-generator-mock-test:test 命令
mvn primo-generator-mock-test:test
直接运行mvn primo-generator-mock-test:test即可下载模板文件&生成测试类
相关配置:
<configPath></configPath>填写路径,相对路径为当前运行项目的根路径。(默认下载路径:/src/main/resources/test/template)
第一次运行运行插件的primo-generator-mock-test:test命令,即可将配置文件下载到对应的路径。
可设置配置文件的文件名,通过<configFileName>primo-generator-mock-test.ftl</configFileName>设置配置文件的文件名称。(默认文件名称为primo-generator-mock-test.ftl)
3. 引入mock相关依赖
自动测试代码生成插件
插件生成的mock测试类方法依赖powermock&mockito,建议直接引入如下依赖(不依赖对于插件的运行没有影响)
<dependency> <groupId>wiki.primo.generator</groupId> <artifactId>primo-generator-mock-test-jar</artifactId> <version>1.0.0-SNAPSHOT</version> <scope>test</scope> </dependency>
4. configuration中相关配置属性
在引入插件的项目名模块下,运行插件的megatron:test命令即可在对应的test路径下生成测试用例。
必填
<testPackageName>:必填)配置需要生成单元测试用例的包名,不要填写接口所在包名,需要实现类所在包名,会遍历包下以及子包下所有类和类的方法(支持配置多个包名,英文分号隔开不同的包名)。
可以配置单个类。例如:wiki.primo.generator.primogeneratormocktestdemo.service.impl.UserServiceImpl.java
注意,配置单个类一定要以.java结尾。
不支持的类:
- 接口
- 枚举
- 抽象类
- 私有类
选填
注意:在1.0.0版本之前的jar包未上传至中央仓库
1.0.0
- <jsonConfigPath>: json配置文件路径,defaultValue = “/src/main/resources/test/template/”
- <jsonConfigFileName>: json配置文件名称,defaultValue = “primo-generator-mock-test.json”
- <isDownloadTemplateFile>: 是否将Template配置文件下载到本地,默认true
- <isDownloadJsonFile>: 是否将json配置文件下载到本地,默认true
0.1.1-SNAPSHOT
<configPath>:下载配置文件的路径
<author>:作者名称
<configFileName>:下载下来的配置文件的名称
<isGetChildPackage>:配置testPackageName的包是否递归获取子包下的类(默认true)
<isMockThisOtherMethod>:配置是否mock掉父类以及自身测试类非测试的方法(默认true),父类/本类方法调用需要使用this进行调用,目前版本无法支持mock
<isSetBasicTypesRandomValue>:配置是否设置基础类型的值随机生成(默认false)
<setStringRandomRange>:配置字符串随机值的位数(例如:“10”,表示10位随机字母/数字字符)
<setIntRandomRange>:配置int/Integer类型随机值的范围(例如:“0,1000”,表示[0,1000)范围的int数值,配置固定的值可配置为"0",则int值固定为0 )
<setLongRandomRange>:配置long/Long类型随机值的范围(配置规则与setIntRandomRange类似)
<setBooleanRandomRange>:配置boolean/Boolean类型随机值的范围(例如:配置为"true"/"false"表示为固定的值,其他任意值表示true和false随机)