单元测试代码自动生成方法、装置、存储介质及设备制造方法及图纸

技术编号:33116286 阅读:11 留言:0更新日期:2022-04-17 00:09
本发明专利技术实施例公开了单元测试代码自动生成方法、装置、存储介质及设备,涉及单元测试技术领域,能有效解决当前编写单元测试代码占用程序员工作量大的问题。该方法包括:获得用户在Java类的至少一个待测方法上标注的Swagger注解和Cases注解,Cases注解包括针对待测方法的至少一个测试用例;扫描Java类中的所有的Swagger注解和Cases注解,并生成与Java类对应的定义文件,定义文件包括至少一个待测方法的定义信息;根据定义文件和预先获得的单元测试代码模板,生成与测试用例一一对应的单元测试代码。代码。代码。

【技术实现步骤摘要】
单元测试代码自动生成方法、装置、存储介质及设备


[0001]本专利技术涉及单元测试
,具体涉及一种单元测试代码自动生成方法、装置、存储介质及设备。

技术介绍

[0002]在编写java代码的时候,需要尽可能多的为编写的业务代码(类或方法等)配套编写相关的单元测试代码,这些单元测试代码会在构建过程中的某个节点被触发执行,以快速验证业务代码的正确性,这样还能保证在未来对业务代码的修改过程不会破坏原本的预期。
[0003]具体而言,单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。比如对函数abs(),可以编写出以下几个测试用例:输入非数值类型,比如None、[]、{},期待抛出TypeError。把上面的测试用例放到一个测试模块里,就是一个完整的单元测试。如果单元测试通过,说明我们测试的这个函数能够正常工作。如果单元测试不通过,要么函数有bug,要么测试条件输入不正确,总之,需要修复使单元测试能够通过。单元测试通过后的意义在于:如果我们对abs()函数代码做了修改,只需要再跑一遍单元测试,如果通过,说明我们的修改不会对abs()函数原有的行为造成影响,如果测试不通过,说明我们的修改与原有行为不一致,要么修改函数代码,要么修改测试用例。
[0004]因此,单元测试对于软件开发来说是非常重要的。然而,在现实工作中,经常会人为的忽略单元测试代码的编写,这是因为编写单元测试代码需要大量的时间,这让原本就忙于编写业务代码的程序员根本无暇顾及。

技术实现思路

[0005]本专利技术实施例提供一种单元测试代码自动生成方法、装置、存储介质及设备,能有效解决当前编写单元测试代码占用程序员工作量大的问题。
[0006]为了解决上述问题,从第一方面,本专利技术实施例公开了一种单元测试代码的自动生成方法,所述方法包括:
[0007]获得用户在Java类的至少一个待测方法上标注的Swagger注解和Cases注解,所述Cases注解包括针对所述待测方法的至少一个测试用例;
[0008]扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件,所述定义文件包括至少一个所述待测方法的定义信息;
[0009]根据所述定义文件和预先获得的单元测试代码模板,生成与所述测试用例一一对应的单元测试代码。
[0010]进一步的,所述方法还包括:
[0011]在生成与所述Java类对应的定义文件后,将所述定义文件存储在所述Java类对应的第一目录下,其中,所述第一目录与用于存储所述Java类的目录不同;和
[0012]在生成与所述测试用例一一对应的单元测试代码后,将所述单元测试代码存储在
所述Java类对应的第二目录下,其中,所述第二目录与所述第一目录以及存储有所述Java类的目录均不同。
[0013]进一步的,所述方法还包括:
[0014]接收用户通过Java构建工具在预设阶段编译的任务一;其中,所述任务一为扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件;
[0015]所述扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件的步骤包括:
[0016]在接收到执行所述任务一的触发操作时,扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件。
[0017]进一步的,所述扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件的步骤包括:
[0018]扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,获得在所述Java类的历史待测方法上更新的所述Swagger注解和所述Cases注解,和/或,获得在所述Java类的新增待测方法上标注的所述Swagger注解和所述Cases注解;
[0019]根据在所述Java类的历史待测方法上更新的所述Swagger注解和所述Cases注解,在所述定义文件中,将针对所述历史待测方法的定义信息更新;
[0020]根据在所述Java类的新增待测方法上标注的所述Swagger注解和所述Cases注解,在所述定义文件中新增对所述新增待测方法的定义信息。
[0021]进一步的,所述方法还包括:
[0022]接收用户通过Java构建工具在预设阶段编译的任务二;其中,所述任务二为根据所述定义文件和预先获得的单元测试代码模板,生成并执行与所述测试用例一一对应的单元测试代码;
[0023]所述根据所述定义文件和预先获得的单元测试代码模板,生成与所述测试用例一一对应的单元测试代码的步骤包括:
[0024]在接收到执行所述任务二的触发操作时,根据所述定义文件和预先获得的单元测试代码模板,生成并执行与所述测试用例一一对应的单元测试代码。
[0025]进一步的,所述方法还包括:
[0026]接收用户自定义构建的所述单元测试代码模板;
[0027]将所述单元测试代码模板存储在所述Java类对应的第三目录下,所述第三目录与所述第一目录、所述第二目录以及存储有所述Java类的目录均不同。
[0028]进一步的,所述方法还包括:在生成与所述Java类对应的定义文件后,将所述定义文件上传至服务器。
[0029]从第二方面,本专利技术实施例公开了一种单元测试代码的自动生成装置,所述装置包括:
[0030]注解获得模块,用于获得用户在Java类的至少一个待测方法上标注的Swagger注解和Cases注解,所述Cases注解包括针对所述待测方法的至少一个测试用例;
[0031]定义文件生成模块,用于扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件,所述定义文件包括至少一个所述待测方
法的定义信息;
[0032]测试代码生成模块,用于根据所述定义文件和预先获得的单元测试代码模板,生成与所述测试用例一一对应的单元测试代码。
[0033]进一步的,该装置还包括:
[0034]第一存储模块,用于在生成与所述Java类对应的定义文件后,将所述定义文件存储在所述Java类对应的第一目录下,其中,所述第一目录与用于存储所述Java类的目录不同;和
[0035]第二存储模块,用于在生成与所述测试用例一一对应的单元测试代码后,将所述单元测试代码存储在所述Java类对应的第二目录下,其中,所述第二目录与所述第一目录以及存储有所述Java类的目录均不同。
[0036]进一步的,该装置还包括:
[0037]任务一接收模块,用于接收用户通过Java构建工具在预设阶段编译的任务一;其中,所述任务一为扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种单元测试代码的自动生成方法,其特征在于,所述方法包括:获得用户在Java类的至少一个待测方法上标注的Swagger注解和Cases注解,所述Cases注解包括针对所述待测方法的至少一个测试用例;扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件,所述定义文件包括至少一个所述待测方法的定义信息;根据所述定义文件和预先获得的单元测试代码模板,生成与所述测试用例一一对应的单元测试代码。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在生成与所述Java类对应的定义文件后,将所述定义文件存储在所述Java类对应的第一目录下,其中,所述第一目录与用于存储所述Java类的目录不同;和在生成与所述测试用例一一对应的单元测试代码后,将所述单元测试代码存储在所述Java类对应的第二目录下,其中,所述第二目录与所述第一目录以及存储有所述Java类的目录均不同。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收用户通过Java构建工具在预设阶段编译的任务一;其中,所述任务一为扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件;所述扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件的步骤包括:在接收到执行所述任务一的触发操作时,扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件。4.根据权利要求1或3所述的方法,其特征在于,所述扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,并生成与所述Java类对应的定义文件的步骤包括:扫描所述Java类中的所有的所述Swagger注解和所述Cases注解,获得在所述Java类的历史待测方法上更新的所述Swagger注解和所述Cases注解,和/或,获得在所述Java类的新增待测方法上标注的所述Swagger注解和所述Cases注解;根据在所述Java类的历史待测方法上更新的所述Swagger注解和所述Cases注解,在所述定...

【专利技术属性】
技术研发人员:梁子健陈禹旭崔焱代昊琦康旖刘明伟刘竹青任昊文
申请(专利权)人:南方电网数字电网研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1