在对比了几款插件后,终究选择了从头打造一套合适自己的插件。
参看:【谈一谈单元测验】
插件装置
-
本地装置
[文件: jcode5-1.0-SNAPSHOT.zip] 请在PC端预览或下载
-
idea插件市场下载,查找JCode5
插件运用
插件有三个功用
-
生成测验代码,也便是生成单元测验。
-
生成json数据,通常用来生成测验数据,比方model。用来参数化测验。
-
添加测验办法,跟着事务开发,类或许添加一下功用办法,这个时候相应的能够添加测验办法
定位到需求测验的类,快捷键或菜单定位到generater,如下,选择JCode5.
1、生成测验类
现在支持三个选项,后续会逐渐完善
另外两个功用相似,直接尝试运用一下就行。
2、生成的结果---类+json数据
@ParameterizedTest @ValueSource(strings = {"/com/cq/common/JCode5/testExtend.json"})
public void testExtendTest(String str) {
JSONObject arg= TestUtils.getTestArg(str);
Integer i = arg.getInteger("Integer");
List stringList = JSONObject.parseArray(arg.getString("List"),String.class);
String stringArg = arg.getString("String");
String stringArg1 = arg.getString("String");
String stringArg0 = arg.getString("String");
when(testService.testBase(any(Integer.class))).thenReturn(stringArg);
when(testService.testMuti(any(List.class),any(Integer.class))).thenReturn(stringList);
when(testService.getStr(any(Integer.class))).thenReturn(stringArg0);
when(testService.testOther(any(Student.class))).thenReturn(stringArg1);
jCode5.testExtend(i); }
如上除了生成根本的代码,另外会生成测验数据,它会将该办法所需求的测验数据全都生成在一个json文件傍边,完全完成
“数据和代码的分离”
如testExtend.json:
{ "Integer":1, "String":"test", "List":[ "test" ]
}
3、弥补断定句子
这一块前期考虑关于不同的办法有不同的校验,所以现在想的仍是开发者自己去写验证代码。
注意事项
在主动生成完代码之后,虽然能够运行,但如咱们前面提到的,为了写单元测验而写的单元测验是没什么价值的,咱们的终究目的是为了写一个好的测验。代码主动生成,但它终究能力有限,所以仍是需求咱们自己再去验证,比方
-
该插件生成的代码需求junit5和mockito的支持,运用时需求引入相关的依靠
-
添加assert校验逻辑,看是不是想要的结果,现在插件不会主动生成assertEquals等断言代码。
-
运用参数化测验能力,仿制一份生成的json文件并修改输入数据,多组测验
插件完成介绍
首要的完成思路,参考了dubbo的SPI的源码,也便是主动完成自适应SPI那部分,简单点说便是反射获取代码逻辑,然后生成测验代码。
后期规划
-
mock数据可定制,现在的想法是
-
固定值比方现在的String: test、Integer和boolean: 0、1
-
测验者运用配置模版,比方txt文件包括keyValue对
-
运用Faker,关于name、email、phone这种特定倾向的数据进行特色主动生成
-
主动分支测验,这一块的想法现在首要针对if来做,需求一定的时刻。
-
其他