一种单元测试代码自动生成方法及装置制造方法及图纸

技术编号:19744969 阅读:13 留言:0更新日期:2018-12-12 04:41
本发明专利技术公开了一种单元测试代码自动生成方法,包括如下步骤:S1:导入源代码文件,所述源代码文件包括至少一个功能模块的代码;S2:读取并解析所述源代码文件,获取所述源代码文件对应的元数据信息和逻辑代码,将不同的元数据信息分别存储在不同的集合中;S3:根据预先定义的单元测试代码生成规则以及所述元数据信息和逻辑代码,自动生成对应的单元测试代码;其中,所述解析源代码文件的步骤包括:将文本切分为字符串数组逐行进行解析,采用正则表达式匹配出所述源代码文件对应的元数据信息和逻辑代码。本发明专利技术提供单元测试代码自动生成方法,大幅度的节约开发人员时间,提高开发人员工作效率,避免人工编写上的疏漏及错误,缩短项目的开发周期。

【技术实现步骤摘要】
一种单元测试代码自动生成方法及装置
本专利技术涉及单元测试
,特别涉及一种单元测试代码自动生成方法及装置。
技术介绍
单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。在编程人员进行系统开发的过程中,开发人员需要对编写的代码进行单元测试代码的编写,以测试开发代码的有效性及鲁棒性。而往往,在一个项目中会存在大量功能及结构相仿的代码。当针对该类代码进行测试样例编写时,由于工作量大,耗时多,重复性工作很大,会占用开发人员的大量精力,从而使得编码效率较低。而且传统的人工编写单元测试代码时,容易在类命名、包路径以及方法名称、变量名称、变量类型的使用上出现不规范,导致出现编写出的单元测试代码疏漏及错误。
技术实现思路
为了解决上述
技术介绍
中提及的一个或多个现有技术的问题,本专利技术实施例提供了一种单元测试代码自动生成方法及装置,以克服传统人工编写单元测试代码导致的编码效率较低、代码容易出现疏漏及错误等问题。为解决上述技术问题,本专利技术采用的技术方案是:一方面,本专利技术实施例公开了一种单元测试代码自动生成方法,所述方法包括如下步骤:S1:导入源代码文件,所述源代码文件包括至少一个功能模块的代码;S2:读取并解析所述源代码文件,获取所述源代码文件对应的元数据信息和逻辑代码,将不同的元数据信息分别存储在不同的集合中;S3:根据预先定义的单元测试代码生成规则以及所述元数据信息和逻辑代码,自动生成对应的单元测试代码;其中,所述解析源代码文件的步骤包括:将文本切分为字符串数组逐行进行解析,采用正则表达式匹配出所述源代码文件对应的元数据信息和逻辑代码。进一步的,所述解析源代码文件的步骤具体包括:将文本切分为字符串数组逐行进行解析采用正则表达式匹配出所述源代码文件对应的元数据信息和逻辑代码,将不同的元数据信息分别存储在不同的集合中;判断匹配出的所述元数据信息是否完整,若完整,则将所述元数据信息直接存储到相对应的集合中,若不完整,则进行细粒度解析,将不完整的元数据信息补充完整后存储到相对应的集合中;将所述元数据信息中的类文本按类之间的相互关系,通过文本容器进行依赖关联。其中,文本容器中的存储单元是类为单位的,一个类中有存解析的方法、实例变量、导入包等等不同的集合,这些集合是类私有的,彼此的类之间是不直接共享这些集合的。文本容器在刷新类之间的相互关系时,会用到相对应的集合进行关联。进一步的,所述解析源代码文件的步骤具体还包括:以公共方法为单位对方法类文本进行正则表达式匹配解析,解析出需要mock的方法。进一步的,所述解析源代码文件的步骤具体还包括:将所述元数据信息中的类文本解析为内部对象Definition,并存储到文本容器中。进一步的,所述判断匹配出的所述元数据信息是否完整的步骤具体包括:分别按标志“{}”、“()”判断所述元数据信息是否完整,若“{}”或“()”是完整的,则对应的所述元数据信息是完整的,若“{}”或“()”是不完整的,则对应的所述元数据信息也是不完整的。进一步的,,所述补充元数据信息具体包括:分别按标志“{}”、“()”对所述不完整的元数据信息进行补充,将元数据信息对应的文本内容从字符“{”补充到字符“}”,或从字符“(”补充到字符“)”,使对应的元数据信息完整。进一步的,所述自动生成对应的单元测试代码的步骤具体包括:针对POJO实体类,解析出实例字段和方法,按所述解析出的方法进行输出。进一步的,所述自动生成对应的单元测试代码的步骤具体还包括:针对普通类和/或枚举类,以方法为单位进行匹配解析,对需要mock的方法进行mock模拟;对需要mock的变量进行mock模拟;在相关文本中查找mock参数和返回值。另一方面,本专利技术实施例还公开了一种单元测试代码自动生成装置,所述装置包括:源代码文件导入模块,用于导入源代码文件,所述源代码文件包括至少一个功能模块的代码:文本解析模块,用于读取并解析导入的所述源代码文件,获取所述源代码文件对应的元数据信息和逻辑代码;文本容器,用于存储内部对象Definition,所述内部对象Definition为所述元数据信息中的类文本解析出来的;生成规则获取模块,用于获取所述源代码文件所对应的单元测试代码生成规则,所述单元测试代码生成规则在配置文件中是预先定义的;代码自动生成模块,用于根据预先定义的单元测试代码生成规则以及所述元数据信息和逻辑代码,自动生成对应的单元测试代码。日志记录模块,用于查看生成的单元测试代码文件。进一步的,所述代码自动生成模块包括:文件生成子模块,用于根据所述源代码文件的目录结构,生成对应目录以及该目录下的空白目标文件;代码生成子模块,用于根据所预先定义的单元测试代码生成规则以及所述元数据信息和逻辑代码,在所述空白目标文件中自动生成对应的单元测试代码。本专利技术实施例提供的技术方案带来的有益效果是:1、本专利技术实施例公开的单元测试代码自动生成方法及装置,通过解析需要测试的源代码,自动生成相应的单元测试代码,大幅度的节约开发人员时间,提高开发人员工作效率。2、本专利技术实施例公开的单元测试代码自动生成方法及装置,通过解析需要测试的源代码,自动生成相应的单元测试代码,比传统人工编写单元测试代码更加准确,在类命名、包路径以及方法名称、变量名称、变量类型的使用会更加规范,避免人工编写上的疏漏及错误。3、本专利技术实施例公开的单元测试代码自动生成方法及装置,能够以项目为单位进行解析源代码和批量生成单元测试代码,从而能够整体的提升指定项目的开发测试进度,缩短项目的开发周期。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的单元测试代码自动生成方法流程图;图2是本专利技术实施例提供的单元测试代码自动生成装置的模块示意图;图3是本专利技术实施例提供的单元测试代码自动生成装置的用户界面示意图;图4是本专利技术实施例提供的单元测试代码自动生成装置的软件架构图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面结合说明书附图对本专利技术作进一步阐述。如图1所示,本专利技术实施例公开了一种单元测试代码自动生成方法,所述方法包括如下步骤:S1:导入源代码文件,所述源代码文件包括至少一个功能模块的代码。具体的,所述源代码文件可以是实现某一个功能的功能模块的代码,也可以是多个功能或结构相仿的功能模块的代码,本文档来自技高网...

【技术保护点】
1.一种单元测试代码自动生成方法,其特征在于,所述方法包括如下步骤:S1:导入源代码文件,所述源代码文件包括至少一个功能模块的代码;S2:读取并解析所述源代码文件,获取所述源代码文件对应的元数据信息和逻辑代码,将不同的元数据信息分别存储在不同的集合中;S3:根据预先定义的单元测试代码生成规则以及所述元数据信息和逻辑代码,自动生成对应的单元测试代码;其中,所述解析源代码文件的步骤包括:将文本切分为字符串数组逐行进行解析,采用正则表达式匹配出所述源代码文件对应的元数据信息和逻辑代码。

【技术特征摘要】
1.一种单元测试代码自动生成方法,其特征在于,所述方法包括如下步骤:S1:导入源代码文件,所述源代码文件包括至少一个功能模块的代码;S2:读取并解析所述源代码文件,获取所述源代码文件对应的元数据信息和逻辑代码,将不同的元数据信息分别存储在不同的集合中;S3:根据预先定义的单元测试代码生成规则以及所述元数据信息和逻辑代码,自动生成对应的单元测试代码;其中,所述解析源代码文件的步骤包括:将文本切分为字符串数组逐行进行解析,采用正则表达式匹配出所述源代码文件对应的元数据信息和逻辑代码。2.根据权利要求1所述的单元测试代码自动生成方法,其特征在于,所述解析源代码文件的步骤具体包括:将文本切分为字符串数组逐行进行解析采用正则表达式匹配出所述源代码文件对应的元数据信息和逻辑代码,将不同的元数据信息分别存储在不同的集合中;判断匹配出的所述元数据信息是否完整,若完整,则将所述元数据信息直接存储到相对应的集合中,若不完整,则进行细粒度解析,将不完整的元数据信息补充完整后存储到相对应的集合中;将所述元数据信息中的类文本按类之间的相互关系,通过文本容器进行依赖关联。3.根据权利要求1至2任意一项所述的单元测试代码自动生成方法,其特征在于,所述解析源代码文件的步骤具体还包括:以公共方法为单位对方法类文本进行正则表达式匹配解析,解析出需要mock的方法。4.根据权利要求1至2任意一项所述的单元测试代码自动生成方法,其特征在于,所述解析源代码文件的步骤具体还包括:将所述元数据信息中的类文本解析为内部对象Definition,并存储到文本容器中。5.根据权利要求2所述的单元测试代码自动生成方法,其特征在于,所述判断匹配出的所述元数据信息是否完整的步骤具体包括:分别按标志“{}”、“()”判断所述元数据信息是否完整,若“{}”或“()”是完整的,则对应的所述元数据信息是完整的,若“{}”或“()”是不完整的,则对应的所述元数据信息也是不完整的。6.根据权利要求2所述的...

【专利技术属性】
技术研发人员:曾健叶国华司孝波龚钢郭文钦
申请(专利权)人:苏宁易购集团股份有限公司
类型:发明
国别省市:江苏,32

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

1