天翼云代理,天翼云代理商,北京代理商
天翼云折扣专线:400-150-1900(全国市话)

junit5单元测试自动生成最佳实践

2022-02-21 03:05:08
简介: 在对比了几款插件后,终究选择了从头打造一套合适自己的插件。参看:【谈一谈单元测验】插件装置本地装置[文件: jcode5-1.0-SNAPSHOT.zip] 请在PC端预览或下载idea插件市场下载,查找JCode5            插件运用插件有三个功用生成测验代码,也便是生成单元测验。生成json数据,通常用来生成测验数据,比方model。用来参数化测验。添加测验办法,跟着事务开发,类可

在对比了几款插件后,终究选择了从头打造一套合适自己的插件。

参看:【谈一谈单元测验】

插件装置

  1. 本地装置

[文件: jcode5-1.0-SNAPSHOT.zip] 请在PC端预览或下载

  1. idea插件市场下载,查找JCode5

            

插件运用

插件有三个功用

  1. 生成测验代码,也便是生成单元测验。
  2. 生成json数据,通常用来生成测验数据,比方model。用来参数化测验。
  3. 添加测验办法,跟着事务开发,类或许添加一下功用办法,这个时候相应的能够添加测验办法

定位到需求测验的类,快捷键或菜单定位到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); //todo verify the result }

如上除了生成根本的代码,另外会生成测验数据,它会将该办法所需求的测验数据全都生成在一个json文件傍边,完全完成

“数据和代码的分离

如testExtend.json:

{ "Integer":1, "String":"test", "List":[ "test" ]
}

3、弥补断定句子

这一块前期考虑关于不同的办法有不同的校验,所以现在想的仍是开发者自己去写验证代码。

注意事项

在主动生成完代码之后,虽然能够运行,但如咱们前面提到的,为了写单元测验而写的单元测验是没什么价值的,咱们的终究目的是为了写一个好的测验。代码主动生成,但它终究能力有限,所以仍是需求咱们自己再去验证,比方

  1. 该插件生成的代码需求junit5和mockito的支持,运用时需求引入相关的依靠
  2. 添加assert校验逻辑,看是不是想要的结果,现在插件不会主动生成assertEquals等断言代码。
  3. 运用参数化测验能力,仿制一份生成的json文件并修改输入数据,多组测验

插件完成介绍

首要的完成思路,参考了dubbo的SPI的源码,也便是主动完成自适应SPI那部分,简单点说便是反射获取代码逻辑,然后生成测验代码。

后期规划

  1. mock数据可定制,现在的想法是
    1. 固定值比方现在的String: test、Integer和boolean: 0、1
    2. 测验者运用配置模版,比方txt文件包括keyValue对
    3. 运用Faker,关于name、email、phone这种特定倾向的数据进行特色主动生成
  2. 主动分支测验,这一块的想法现在首要针对if来做,需求一定的时刻。
  3. 其他
12年经验 · 提供上云保障

服务热线:132-6161-6125(手机) 400-150-1900(全国市话)

站内导航: 天翼云服务器价格| 天翼云购买流程| 天翼云代理| 北京天翼云代理商| 杭州天翼云代理| 深圳天翼云代理商| 钉钉代理商| 阿里云代理| 公司官网

我公司收款账号| 天翼云备案系统

CopyRight © 2019 天翼云代理商. All Rights Reserved 京ICP备11011846号-15 管理-北京志远天辰科技有限公司