CN111459495B - 单元测试代码文件生成方法、电子装置及存储介质 - Google Patents

单元测试代码文件生成方法、电子装置及存储介质 Download PDF

Info

Publication number
CN111459495B
CN111459495B CN202010235750.2A CN202010235750A CN111459495B CN 111459495 B CN111459495 B CN 111459495B CN 202010235750 A CN202010235750 A CN 202010235750A CN 111459495 B CN111459495 B CN 111459495B
Authority
CN
China
Prior art keywords
interface
file
preset
unit test
code file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010235750.2A
Other languages
English (en)
Other versions
CN111459495A (zh
Inventor
钟世亮
朱世康
冷易
曹远峰
龙俐伶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Merchants Finance Technology Co Ltd
Original Assignee
China Merchants Finance Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Merchants Finance Technology Co Ltd filed Critical China Merchants Finance Technology Co Ltd
Priority to CN202010235750.2A priority Critical patent/CN111459495B/zh
Publication of CN111459495A publication Critical patent/CN111459495A/zh
Application granted granted Critical
Publication of CN111459495B publication Critical patent/CN111459495B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及数据处理技术,提供了一种单元测试代码文件生成方法、电子装置及存储介质。该方法利用预设的接口监测器监测到接口被执行测试时,获取该接口的接口行为信息,接口行为信息包括接口请求方法及接口请求路径,之后提取出包含第一预设字符的第二源代码文件并解析,得到第二源代码文件的文件package名、文件名及功能函数代码块,再对功能函数代码块解析得到第二源代码文件的接口路径、接口类型、接口函数名,当接口请求方法与接口类型、接口请求路径与接口路径均相同时,生成单元测试的元数据并填充至预设的模板文件中,生成单元测试代码目标文件并反馈至客户端。本发明可以自动生成单元测试代码文件,提高了编写单元测试代码的准确率。

Description

单元测试代码文件生成方法、电子装置及存储介质
技术领域
本发明涉及数据处理领域,尤其涉及一种单元测试代码文件生成方法、电子装置及存储介质。
背景技术
在编程人员进行系统开发的过程中,程序员需要对编写的接口代码进行单元测试,故而需要编写相应的单元测试代码,以此测试接口代码的有效性及鲁棒性。在一个项目中会存在大量功能及结构相似的接口代码,针对该类代码进行单元测试代码编写时,传统的人工编写单元测试代码方式,容易在类命名、变量名称及变量类型的使用上出现不规范,导致编写出的单元测试代码出现疏漏及错误。
发明内容
鉴于以上内容,本发明提供一种单元测试代码文件生成方法、电子装置及存储介质,其目的在于解决现有技术中手动编写单元测试代码出错率高的问题。
为实现上述目的,本发明提供一种单元测试代码文件生成方法,该方法包括:
接收步骤:接收客户端发出的生成单元测试代码文件的请求,解析所述请求,获取待生成单元测试代码文件的接口的第一源代码文件;
监测步骤:利用预设的接口监测器实时监测所述接口,当监测到所述接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径;
解析步骤:识别所述第一源代码文件,提取出包含第一预设字符的第二源代码文件,解析所述第二源代码文件,得到所述第二源代码文件的文件package名、文件名及功能函数代码块,利用预设的解析规则对所述功能函数代码块进行解析,得到所述第二源代码文件的接口路径、接口类型、接口函数名;及
生成步骤:将所述接口请求方法、所述接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,基于所述接口行为信息、文件package名、文件名及接口函数名生成单元测试的元数据,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件并反馈至所述客户端。
优选的,所所述解析步骤包括:
利用预设的文本解析器将所述第二源代码文件解析为字符串,对所述字符串进行正则表达式运算,利用预设的第一正则表达式运算所述字符串得到所述文件package名,利用预设的第二正则表达式运算所述字符串得到以第二预设字符开头并以第三预设字符结尾的所述功能代码块。
优选的,所述解析步骤还包括:
利用所述预设的第一正则表达式运算所述功能函数代码块得到包含注解的代码行,获取所述包含注解的代码行的接口路径及接口类型,利用所述预设的第二正则表达式运算所述功能函数代码块得到所述接口函数名。
优选的,所述方法还包括:
对所述单元测试代码目标文件执行编译操作,以将所述单元测试代码目标文件编译为预设格式的可执行测试的程序文件。
优选的,所述接口行为信息还包括:接口输入参数、接口返回结果及接口状态。
为实现上述目的,本发明还提供一种电子装置,该电子装置包括:存储器及处理器,所述存储器上存储单元测试代码文件生成程序,所述单元测试代码文件生成程序被所述处理器执行,实现如下步骤:
接收步骤:接收客户端发出的生成单元测试代码文件的请求,解析所述请求,获取待生成单元测试代码文件的接口的第一源代码文件;
监测步骤:利用预设的接口监测器实时监测所述接口,当监测到所述接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径;
解析步骤:识别所述第一源代码文件,提取出包含第一预设字符的第二源代码文件,解析所述第二源代码文件,得到所述第二源代码文件的文件package名、文件名及功能函数代码块,利用预设的解析规则对所述功能函数代码块进行解析,得到所述第二源代码文件的接口路径、接口类型、接口函数名;及
生成步骤:将所述接口请求方法、所述接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,基于所述接口行为信息、文件package名、文件名及接口函数名生成单元测试的元数据,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件并反馈至所述客户端。
优选的,所述解析步骤包括:
利用预设的文本解析器将所述第二源代码文件解析为字符串,对所述字符串进行正则表达式运算,利用预设的第一正则表达式运算所述字符串得到所述文件package名,利用预设的第二正则表达式运算所述字符串得到以第二预设字符开头并以第三预设字符结尾的所述功能代码块。
优选的,所述解析步骤还包括:
利用所述预设的第一正则表达式运算所述功能函数代码块得到包含注解的代码行,获取所述包含注解的代码行的接口路径及接口类型,利用所述预设的第二正则表达式运算所述功能函数代码块得到所述接口函数名。
优选的,所述接口行为信息还包括:接口输入参数、接口返回结果及接口状态。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括单元测试代码文件生成程序,所述单元测试代码文件生成程序被处理器执行时,实现如上所述单元测试代码文件生成方法中的任意步骤。
本发明提出的单元测试代码文件生成方法、电子装置及存储介质,通过对开发人员进行接口调试、测试人员对接口的测试等动作进行实时监测,识别出接口行为信息,并保存为接口的结构数据并存储,再对接口的源代码进行分析,将分析得到的数据与监测的接口行为数据进行匹配,即可生成该接口源代码的单元测试代码文件,提高了单元测试代码编写的准确率,为单元测试代码的编写提供了一种工作量小、自动化程度高的方法。
附图说明
图1为本发明电子装置较佳实施例的示意图;
图2为图1中单元测试代码文件生成程序较佳实施例的模块示意图;
图3为本发明单元测试代码文件生成方法较佳实施例的流程图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1所示,为本发明电子装置1较佳实施例的示意图。
该电子装置1包括但不限于:存储器11、处理器12、显示器13及网络接口14。所述电子装置1通过网络接口14连接网络,获取原始数据。其中,所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobilecommunication,GSM)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi、通话网络等无线或有线网络。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述电子装置1的外部存储设备,例如该电子装置1配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器11还可以既包括所述电子装置1的内部存储单元也包括其外部存储设备。本实施例中,存储器11通常用于存储安装于所述电子装置1的操作系统和各类应用软件,例如单元测试代码文件生成程序10的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述电子装置1的总体操作,例如执行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行单元测试代码文件生成程序10的程序代码等。
显示器13可以称为显示屏或显示单元。在一些实施例中显示器13可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-EmittingDiode,OLED)触摸器等。显示器13用于显示在电子装置1中处理的信息以及用于显示可视化的工作界面,例如显示数据统计的结果。
网络接口14可选地可以包括标准的有线接口、无线接口(如WI-FI接口),该网络接口14通常用于在所述电子装置1与其它电子设备之间建立通信连接。
图1仅示出了具有组件11-14以及单元测试代码文件生成程序10的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
可选地,所述电子装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子装置1中处理的信息以及用于显示可视化的用户界面。
该电子装置1还可以包括射频(Radio Frequency,RF)电路、传感器和音频电路等等,在此不再赘述。
在上述实施例中,处理器12执行存储器11中存储的单元测试代码文件生成程序10时可以实现如下步骤:
接收步骤:接收客户端发出的生成单元测试代码文件的请求,解析所述请求,获取待生成单元测试代码文件的接口的第一源代码文件;
监测步骤:利用预设的接口监测器实时监测所述接口,当监测到所述接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径;
解析步骤:识别所述第一源代码文件,提取出包含第一预设字符的第二源代码文件,解析所述第二源代码文件,得到所述第二源代码文件的文件package名、文件名及功能函数代码块,利用预设的解析规则对所述功能函数代码块进行解析,得到所述第二源代码文件的接口路径、接口类型、接口函数名;及
生成步骤:将所述接口请求方法、所述接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,基于所述接口行为信息、文件package名、文件名及接口函数名生成单元测试的元数据,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件并反馈至所述客户端。
所述存储设备可以为电子装置1的存储器11,也可以为与电子装置1通讯连接的其它存储设备。
关于上述步骤的详细介绍,请参照下述图2关于单元测试代码文件生成程序10实施例的程序模块图以及图3关于单元测试代码文件生成方法实施例的流程图的说明。
在其他实施例中,所述单元测试代码文件生成程序10可以被分割为多个模块,该多个模块被存储于存储器11中,并由处理器12执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。
参照图2所示,为图1中单元测试代码文件生成程序10一实施例的程序模块图。在本实施例中,所述单元测试代码文件生成程序10可以被分割为:接收模块110、监测模块120、解析模块130及生成模块140。
接收模块110,用于接收客户端发出的生成单元测试代码文件的请求,解析所述请求,获取待生成单元测试代码文件的接口的第一源代码文件。
在本实施例中,请求中包括待生成单元测试代码文件的接口的第一源代码文件,还可以包括所述接口相关文档的存储路径及标识。其中,第一源代码包括一个或多个功能模块的代码。接口的第一源代码文件可以是用户在提交请求时一并录入的,也可以是在用户提交生成接口代码的单元测试代码的请求之后,从请求中指定的地址中获取的。获取接口的第一源代码文件的方法还可以提供用户交互界面供用户录入第一源代码文件。需要说明的是,本实施例中的接口为应用程序编程接口,应用程序接口又称为应用编程接口,是一组定义、程序及协议的集合,通过应用程序接口可实现应用之间的相互通信。
单元测试,是指对软件中的最小可测试单元进行检查和验证,旨在检测代码中的错误和漏洞,是对软件的每一行代码或代码块进行覆盖测试以判断其正确与否,例如C语言中单元指一个函数,Java里单元指一个类。单元是人为规定的最小的被测功能模块,单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
监测模块120,用于利用预设的接口监测器实时监测所述接口,当监测到所述接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径。
本实施例中,利用预设的接口监测器对待测试接口进行监测,当监测到待测试接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径,进一步地,接口行为信息还包括接口输入参数、接口返回结果及接口状态。
其中,接口请求方法method,数据格式可以是字符串,且是GET、POST、PUT、DELETE等其中的一种;
接口请求路径path,数据格式是字符串,例如:/api/v1/user?Id=1;
接口输入参数input,捕获数据格式是字符串,关键信息为KEY-VAULE,结构化存储为JSON对象;
接口返回数据output,数据格式是字符串;
接口返回范围状态status,数据格式是整数,例如:200,表示服务器成功地接受了客户端请求。
通过预先设置的接口监测器进行监测,由于监测器仅仅是监测行为,它对接口的请求响应影响极小,基本不影响接口的性能。同时,只有配置了启用接口行为监测的环境变量时,才会启动监测,即保障了此监测行为只在开发调试、测试环境等会起作用,在其它环境不会起作用,即监测的工作范围可控。
解析模块130,用于识别所述第一源代码文件,提取出包含第一预设字符的第二源代码文件,解析所述第二源代码文件,得到所述第二源代码文件的文件package名、文件名及功能函数代码块,利用预设的解析规则对所述功能函数代码块进行解析,得到所述第二源代码文件的接口路径、接口类型、接口函数名。
在本实施例中,为了使生成的单元测试代码文件能够正确编译和生成正确的单元测试覆盖率,需要保证接口的源代码文件和对该源代码进行单元测试的代码的package名称是一样的,因此需要对接口的源代码文件进行解析,获得该接口的源代码对应的文件名、文件package名、接口路径、接口类型、接口函数名。为了方便表述,5个参数分别使用fileName、packName、apiPath、apiMethod、funcName来代替。
具体地,对接口的第一源代码文件进行识别,提取出包含第一预设字符“@RestController”的第二源代码文件,读取并解析包含“@RestController”字符的源代码文件,获取第二源代码文件对应的文件名、package代码行、功能函数代码块。
进一步地,利用预设的文本解析器将所述第二源代码文件解析为字符串,对所述字符串进行正则表达式运算,利用预设的第一正则表达式运算所述字符串得到所述文件package名,利用预设的第二正则表达式运算所述字符串得到以第二预设字符开头并以第三预设字符结尾的所述功能代码块。正则表达式是使用单字字符串来描述、匹配一系列符合某个句法规则的字符串,可以用来检查一个字符串是否含有某种子串,将匹配到的子串进行替换,或者从某个字符串中取出符合某个条件的子串。
利用预设的第一正则表达式运算所述字符串得到以package开头的代码行,即为package代码行;将package代码行去掉package字符即为所述文件package名,利用预设的第二正则表达式运算所述字符串得到以第二预设字符“@RequestMapping”、“@GetMapping”、“@PostMapping”、“@PutMapping”、“@DeleteMapping”开头的代码行并且以第三预设字符“}”结尾的代码行,得到连续几行代码即为一个功能函数代码块。
进一步地,利用所述预设的第一正则表达式运算所述功能函数代码块得到包含注解的代码行,获取所述包含注解的代码行的接口路径及接口类型,利用所述预设的第二正则表达式运算所述功能函数代码块得到所述接口函数名。
利用预设的第一正则表达式对所述功能函数代码块运算得到包含注解的代码行,获取所述包含注解的代码行的接口路径及接口类型,注解包括:“@RequestMapping”、“@GetMapping”、“@PostMapping”、“@PutMapping”、“@DeleteMapping”的代码行,例如:预设的第一正则表达式运算“@GetMapping("/hello")”,则apiMethod=GET,apiPath=/hello。
生成模块140,用于将所述接口请求方法、所述接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,基于所述接口行为信息、文件package名、文件名及接口函数名生成单元测试的元数据,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件并反馈至所述客户端。
在本实施例中,将所述接口请求方法、接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,则生成单元测试元数据,packName、fileName、funcName、method、path、input、status、output是元数据对应字段的值,元数据的格式如下:
Figure SMS_1
Figure SMS_2
采用模板技术生成所述预设的模板文件,其中,模板技术包括:packagetemplate、import template、String Template、Smarty Mock Template、Fast AssertTemplate等,采用模板技术可以实现应用程序业务逻辑和表现逻辑的分离,提高测试代码文件的生成效率。根据预设的模板文件,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件。
在一个实施例中,还可以对单元测试代码目标文件执行编译操作,以将单元测试代码目标文件编译为预设格式的可执行测试的程序文件。
由于各代码文件中所包含的代码并不能够直接被计算机所识别,不能够直接被执行,需要对生成的代码文件以进行编译操作,以生成扩展名为“.class”的可执行测试程序,进而通过运行测试程序来生成单元测试用例执行结果、功能代码单元测试覆盖率等测试报告。
此外,本发明还提供一种单元测试代码文件生成方法。参照图3所示,为本发明单元测试代码文件生成方法的实施例的方法流程示意图。电子装置1的处理器12执行存储器11中存储的单元测试代码文件生成程序10时实现单元测试代码文件生成方法的如下步骤:
步骤S10:接收客户端发出的生成单元测试代码文件的请求,解析所述请求,获取待生成单元测试代码文件的接口的第一源代码文件。
在本实施例中,请求中包括待生成单元测试代码文件的接口的第一源代码文件,还可以包括所述接口相关文档的存储路径及标识。其中,第一源代码包括一个或多个功能模块的代码。接口的第一源代码文件可以是用户在提交请求时一并录入的,也可以是在用户提交生成接口代码的单元测试代码的请求之后,从请求中指定的地址中获取的。获取接口的第一源代码文件的方法还可以提供用户交互界面供用户录入第一源代码文件。需要说明的是,本实施例中的接口为应用程序编程接口,应用程序接口又称为应用编程接口,是一组定义、程序及协议的集合,通过应用程序接口可实现应用之间的相互通信。
单元测试是指对软件中的最小可测试单元进行检查和验证,旨在检测代码中的错误和漏洞,是对软件的每一行代码或代码块进行覆盖测试以判断其正确与否,例如C语言中单元指一个函数,Java里单元指一个类。单元是人为规定的最小的被测功能模块,单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
步骤S20:利用预设的接口监测器实时监测所述接口,当监测到所述接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径。
本实施例中,利用预设的接口监测器对待测试接口进行监测,当监测到待测试接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径,进一步地,接口行为信息还包括接口输入参数、接口返回结果及接口状态。
其中,接口请求方法method,数据格式可以是字符串,且是GET、POST、PUT、DELETE等其中的一种;
接口请求路径path,数据格式是字符串,例如:/api/v1/user?Id=1;
接口输入参数input,捕获数据格式是字符串,关键信息为KEY-VAULE,结构化存储为JSON对象;
接口返回数据output,数据格式是字符串;
接口返回范围状态status,数据格式是整数,例如:200,表示服务器成功地接受了客户端请求。
通过预先设置的接口监测器进行监测,由于监测器仅仅是监测行为,它对接口的请求响应影响极小,基本不影响接口的性能。同时,只有配置了启用接口行为监测的环境变量时,才会启动监测,即保障了此监测行为只在开发调试、测试环境等会起作用,在其它环境不会起作用,即监测的工作范围可控。
步骤S30:识别所述第一源代码文件,提取出包含第一预设字符的第二源代码文件,解析所述第二源代码文件,得到所述第二源代码文件的文件package名、文件名及功能函数代码块,利用预设的解析规则对所述功能函数代码块进行解析,得到所述第二源代码文件的接口路径、接口类型、接口函数名。
在本实施例中,为了使生成的单元测试代码文件能够正确编译和生成正确的单元测试覆盖率,需要保证接口的源代码文件和对该源代码进行单元测试的代码的package名称是一样的,因此需要对接口的源代码文件进行解析,获得该接口的源代码对应的文件名、文件package名、接口路径、接口类型、接口函数名。为了方便表述,5个参数分别使用fileName、packName、apiPath、apiMethod、funcName来代替。
具体地,对接口的第一源代码文件进行识别,提取出包含第一预设字符“@RestController”的第二源代码文件,读取并解析包含“@RestController”字符的源代码文件,获取第二源代码文件对应的文件名、package代码行、功能函数代码块。
进一步地,利用预设的文本解析器将所述第二源代码文件解析为字符串,对所述字符串进行正则表达式运算,利用预设的第一正则表达式运算所述字符串得到所述文件package名,利用预设的第二正则表达式运算所述字符串得到以第二预设字符开头并以第三预设字符结尾的所述功能代码块。正则表达式是使用单字字符串来描述、匹配一系列符合某个句法规则的字符串,可以用来检查一个字符串是否含有某种子串,将匹配到的子串进行替换,或者从某个字符串中取出符合某个条件的子串。
利用预设的第一正则表达式运算所述字符串得到以package开头的代码行,即为package代码行;将package代码行去掉package字符即为所述文件package名,利用预设的第二正则表达式运算所述字符串得到以第二预设字符“@RequestMapping”、“@GetMapping”、“@PostMapping”、“@PutMapping”、“@DeleteMapping”开头的代码行并且以第三预设字符“}”结尾的代码行,得到连续几行代码即为一个功能函数代码块。
进一步地,利用所述预设的第一正则表达式运算所述功能函数代码块得到包含注解的代码行,获取所述包含注解的代码行的接口路径及接口类型,利用所述预设的第二正则表达式运算所述功能函数代码块得到所述接口函数名。
利用预设的第一正则表达式对所述功能函数代码块运算得到包含注解的代码行,获取所述包含注解的代码行的接口路径及接口类型,注解包括:“@RequestMapping”、“@GetMapping”、“@PostMapping”、“@PutMapping”、“@DeleteMapping”的代码行,例如:预设的第一正则表达式运算“@GetMapping("/hello")”,则apiMethod=GET,apiPath=/hello。
步骤S40:将所述接口请求方法、所述接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,基于所述接口行为信息、文件package名、文件名及接口函数名生成单元测试的元数据,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件并反馈至所述客户端。
在本实施例中,将所述接口请求方法、接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,则生成单元测试元数据,packName、fileName、funcName、method、path、input、status、output是元数据对应字段的值,元数据的格式如下:
Figure SMS_3
Figure SMS_4
采用模板技术生成所述预设的模板文件,其中,模板技术包括:packagetemplate、import template、String Template、Smarty Mock Template、Fast AssertTemplate等,采用模板技术可以实现应用程序业务逻辑和表现逻辑的分离,提高测试代码文件的生成效率。根据预设的模板文件,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件。
在一个实施例中,还可以对单元测试代码目标文件执行编译操作,以将单元测试代码目标文件编译为预设格式的可执行测试的程序文件。
由于各代码文件中所包含的代码并不能够直接被计算机所识别,不能够直接被执行,需要对生成的代码文件以进行编译操作,以生成扩展名为“.cla ss”的可执行测试程序,进而通过运行测试程序来生成单元测试用例执行结果、功能代码单元测试覆盖率等测试报告。
此外,本发明实施例还提出一种计算机可读存储介质,该计算机可读存储介质可以是硬盘、多媒体卡、SD卡、闪存卡、SMC、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器等等中的任意一种或者几种的任意组合。所述计算机可读存储介质中包括单元测试代码文件生成程序10,所述单元测试代码文件生成程序10被处理器执行时实现如下操作:
接收步骤:接收客户端发出的生成单元测试代码文件的请求,解析所述请求,获取待生成单元测试代码文件的接口的第一源代码文件;
监测步骤:利用预设的接口监测器实时监测所述接口,当监测到所述接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径;
解析步骤:识别所述第一源代码文件,提取出包含第一预设字符的第二源代码文件,解析所述第二源代码文件,得到所述第二源代码文件的文件package名、文件名及功能函数代码块,利用预设的解析规则对所述功能函数代码块进行解析,得到所述第二源代码文件的接口路径、接口类型、接口函数名;及
生成步骤:将所述接口请求方法、所述接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,基于所述接口行为信息、文件package名、文件名及接口函数名生成单元测试的元数据,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件并反馈至所述客户端。
本发明之计算机可读存储介质的具体实施方式与上述单元测试代码文件生成方法的具体实施方式大致相同,在此不再赘述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,电子装置,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种单元测试代码文件生成方法,应用于电子装置,其特征在于,所述方法包括:
接收步骤:接收客户端发出的生成单元测试代码文件的请求,解析所述请求,获取待生成单元测试代码文件的接口的第一源代码文件;
监测步骤:利用预设的接口监测器实时监测所述接口,当监测到所述接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径;
解析步骤:识别所述第一源代码文件,提取出包含第一预设字符的第二源代码文件,解析所述第二源代码文件,得到所述第二源代码文件的文件package名、文件名及功能函数代码块,利用预设的解析规则对所述功能函数代码块进行解析,得到所述第二源代码文件的接口路径、接口类型、接口函数名;及
生成步骤:将所述接口请求方法、所述接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,基于所述接口行为信息、文件package名、文件名及接口函数名生成单元测试的元数据,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件并反馈至所述客户端。
2.如权利要求1所述的单元测试代码文件生成方法,其特征在于,所述解析步骤包括:
利用预设的文本解析器将所述第二源代码文件解析为字符串,对所述字符串进行正则表达式运算,利用预设的第一正则表达式运算所述字符串得到所述文件package名,利用预设的第二正则表达式运算所述字符串得到以第二预设字符开头并以第三预设字符结尾的所述功能函数代码块。
3.如权利要求2所述的单元测试代码文件生成方法,其特征在于,所述解析步骤还包括:
利用所述预设的第一正则表达式运算所述功能函数代码块得到包含注解的代码行,获取所述包含注解的代码行的接口路径及接口类型,利用所述预设的第二正则表达式运算所述功能函数代码块得到所述接口函数名。
4.如权利要求1所述的单元测试代码文件生成方法,其特征在于,所述方法还包括:
对所述单元测试代码目标文件执行编译操作,以将所述单元测试代码目标文件编译为预设格式的可执行测试的程序文件。
5.如权利要求1至4任意一项所述的单元测试代码文件生成方法,其特征在于,所述接口行为信息还包括:接口输入参数、接口返回结果及接口状态。
6.一种电子装置,该电子装置包括存储器及处理器,其特征在于,所述存储器上存储单元测试代码文件生成程序,所述单元测试代码文件生成程序被所述处理器执行,实现如下步骤:
接收步骤:接收客户端发出的生成单元测试代码文件的请求,解析所述请求,获取待生成单元测试代码文件的接口的第一源代码文件;
监测步骤:利用预设的接口监测器实时监测所述接口,当监测到所述接口被执行测试时,获取该接口的接口行为信息,所述接口行为信息包括接口请求方法及接口请求路径;
解析步骤:识别所述第一源代码文件,提取出包含第一预设字符的第二源代码文件,解析所述第二源代码文件,得到所述第二源代码文件的文件package名、文件名及功能函数代码块,利用预设的解析规则对所述功能函数代码块进行解析,得到所述第二源代码文件的接口路径、接口类型、接口函数名;及
生成步骤:将所述接口请求方法、所述接口请求路径与所述接口类型、所述接口路径进行匹配,当所述接口请求方法与所述接口类型、所述接口请求路径与所述接口路径均相同时,基于所述接口行为信息、文件package名、文件名及接口函数名生成单元测试的元数据,将所述元数据填充至预设的模板文件中,生成单元测试代码目标文件并反馈至所述客户端。
7.如权利要求6所述的电子装置,其特征在于,所述解析步骤包括:
利用预设的文本解析器将所述第二源代码文件解析为字符串,对所述字符串进行正则表达式运算,利用预设的第一正则表达式运算所述字符串得到所述文件package名,利用预设的第二正则表达式运算所述字符串得到以第二预设字符开头并以第三预设字符结尾的所述功能函数代码块。
8.如权利要求7所述的电子装置,其特征在于,所述解析步骤还包括:
利用所述预设的第一正则表达式运算所述功能函数代码块得到包含注解的代码行,获取所述包含注解的代码行的接口路径及接口类型,利用所述预设的第二正则表达式运算所述功能函数代码块得到所述接口函数名。
9.如权利要求6所述的电子装置,其特征在于,所述接口行为信息还包括:接口输入参数、接口返回结果及接口状态。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有单元测试代码文件生成程序,所述单元测试代码文件生成程序被处理器执行时,实现如权利要求1至5中任一项所述单元测试代码文件生成方法的步骤。
CN202010235750.2A 2020-03-30 2020-03-30 单元测试代码文件生成方法、电子装置及存储介质 Active CN111459495B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010235750.2A CN111459495B (zh) 2020-03-30 2020-03-30 单元测试代码文件生成方法、电子装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010235750.2A CN111459495B (zh) 2020-03-30 2020-03-30 单元测试代码文件生成方法、电子装置及存储介质

Publications (2)

Publication Number Publication Date
CN111459495A CN111459495A (zh) 2020-07-28
CN111459495B true CN111459495B (zh) 2023-03-31

Family

ID=71679289

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010235750.2A Active CN111459495B (zh) 2020-03-30 2020-03-30 单元测试代码文件生成方法、电子装置及存储介质

Country Status (1)

Country Link
CN (1) CN111459495B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559344A (zh) * 2020-12-10 2021-03-26 平安养老保险股份有限公司 远程mock测试方法及系统
CN112989740B (zh) * 2021-04-23 2022-02-01 北京欣博电子科技有限公司 一种仿真方法、装置、计算机设备和存储介质
CN113535559B (zh) * 2021-07-14 2024-07-12 杭州默安科技有限公司 一种应用接口覆盖率统计方法和系统
CN113742008B (zh) * 2021-09-13 2024-04-02 挂号网(杭州)科技有限公司 接口调用方法、装置、电子设备及存储介质
CN114827304A (zh) * 2022-03-03 2022-07-29 宁波数益工联科技有限公司 一种高适配性工业数据采集系统
CN114866451B (zh) * 2022-04-29 2023-10-03 深圳依时货拉拉科技有限公司 iOS端路由通信改进方法、装置、存储介质和设备
CN116932403B (zh) * 2023-07-25 2024-06-11 太初(无锡)电子科技有限公司 测试用例的生成方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776311A (zh) * 2016-12-09 2017-05-31 华北计算技术研究所 一种软件接口测试用例的自动生成方法
CN108984388A (zh) * 2018-06-01 2018-12-11 平安壹钱包电子商务有限公司 一种生成自动化测试用例的方法及终端设备
CN108984393A (zh) * 2018-06-12 2018-12-11 苏宁易购集团股份有限公司 一种单元测试代码自动生成方法及装置
CN110647471A (zh) * 2019-09-26 2020-01-03 招商局金融科技有限公司 接口测试用例生成方法、电子装置及存储介质
CN110858172A (zh) * 2018-08-23 2020-03-03 北京京东尚科信息技术有限公司 一种自动化测试代码生成方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776311A (zh) * 2016-12-09 2017-05-31 华北计算技术研究所 一种软件接口测试用例的自动生成方法
CN108984388A (zh) * 2018-06-01 2018-12-11 平安壹钱包电子商务有限公司 一种生成自动化测试用例的方法及终端设备
CN108984393A (zh) * 2018-06-12 2018-12-11 苏宁易购集团股份有限公司 一种单元测试代码自动生成方法及装置
CN110858172A (zh) * 2018-08-23 2020-03-03 北京京东尚科信息技术有限公司 一种自动化测试代码生成方法和装置
CN110647471A (zh) * 2019-09-26 2020-01-03 招商局金融科技有限公司 接口测试用例生成方法、电子装置及存储介质

Also Published As

Publication number Publication date
CN111459495A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
CN111459495B (zh) 单元测试代码文件生成方法、电子装置及存储介质
CN109901834B (zh) 文档页面生成方法、装置、计算机设备和存储介质
CN110825619A (zh) 接口测试用例自动生成方法、装置及存储介质
US7398469B2 (en) Automated test system for testing an application running in a windows-based environment and related methods
CN110704304B (zh) 一种应用程序测试方法、装置、存储介质和服务器
CN110688307B (zh) JavaScript代码检测方法、装置、设备和存储介质
US9632754B2 (en) Auto generation and linkage of source code to test cases
CN110647471B (zh) 接口测试用例生成方法、电子装置及存储介质
US9274930B2 (en) Debugging system using static analysis
CN112559354A (zh) 前端代码规范检测方法、装置、计算机设备及存储介质
CN114546738B (zh) 服务器通用测试方法、系统、终端及存储介质
CN112540924A (zh) 接口自动化测试方法、装置、设备及存储介质
US8661414B2 (en) Method and system for testing an order management system
CN110688315A (zh) 接口代码检测报告生成方法、电子装置及存储介质
CN107957939B (zh) 网页交互界面测试方法及系统
CN114416481A (zh) 日志分析方法、装置、设备及存储介质
CN113434395A (zh) 测试用例的自动化生成方法、装置、设备及介质
CN116245074A (zh) 芯片验证方法、设备及存储介质
CN115934503A (zh) 程序测试方法、装置、设备及存储介质
CN113051171A (zh) 接口测试方法、装置、设备及存储介质
CN112988578A (zh) 一种自动化测试方法和装置
CN112579475A (zh) 代码测试方法、装置、设备及可读存储介质
CN111078529A (zh) 客户端写入模块测试方法、装置、电子设备
CN108885574B (zh) 用于监视和报告设计、编译和运行时的性能和正确性问题的系统
CN108614704B (zh) 代码编译方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant