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

简介: 在对比了几款插件后,最终选择了重新打造一套适合自己的插件。参看:【谈一谈单元测试】插件安装本地安装[文件: 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.   其他  

目录
相关文章
|
6月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
724 0
|
2月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
890 2
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
216 1
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
364 6
|
存储 监控 测试技术
测试脚本编写和维护的最佳实践有哪些?
测试脚本编写和维护的最佳实践有哪些?
364 50
|
9月前
|
Java 测试技术 Android开发
课时148:junit测试工具
课时148介绍了JUnit测试工具的使用,包括定义、配置和编写测试程序。JUnit是流行的用例测试工具,用于确保代码稳定性。
195 0
|
Devops 测试技术 持续交付
软件测试中的自动化与持续集成:最佳实践与挑战
在快速迭代的软件开发周期中,自动化测试和持续集成(CI)已成为提高软件质量和加速产品上市的关键策略。本文探讨了自动化测试和CI的实施如何帮助开发团队提前发现缺陷、缩短反馈循环,并确保代码质量。我们将深入分析自动化测试的策略选择、工具应用以及面临的挑战,同时提供一些克服这些挑战的最佳实践。
461 27
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
344 4
|
监控 测试技术 持续交付
探索自动化测试在软件开发中的最佳实践
本文旨在深入探讨自动化测试在软件开发过程中的应用,以及如何有效地实施自动化测试以提高软件质量和开发效率。通过分析自动化测试的优势、挑战和最佳实践,本文为软件开发团队提供了一套实用的指导方案。