CN111104318B - 一种单元测试结果的导出方法、装置及电子设备 - Google Patents
一种单元测试结果的导出方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111104318B CN111104318B CN201911272501.4A CN201911272501A CN111104318B CN 111104318 B CN111104318 B CN 111104318B CN 201911272501 A CN201911272501 A CN 201911272501A CN 111104318 B CN111104318 B CN 111104318B
- Authority
- CN
- China
- Prior art keywords
- dependency
- unit
- tested
- unit test
- information
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 385
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 45
- 238000006243 chemical reaction Methods 0.000 claims abstract description 39
- 230000001419 dependent effect Effects 0.000 claims description 70
- 230000006870 function Effects 0.000 claims description 49
- 238000004891 communication Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 description 11
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013075 data extraction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000013142 basic testing Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种单元测试结果的导出方法、装置及电子设备,该方法包括:对待测试程序单元进行测试,得到原始单元测试结果,对原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,导出处理后的结果信息,其中,原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的,目标格式至少包括plist格式。本发明实施例提供的方案通过Xcode命令行工具进行单元测试,对单元测试的原始单元测试结果中目标格式的信息进行格式转换,可以获得能够导出的格式的结果信息,进而便可以将处理后的结果信息进行导出,以便进行后续处理。
Description
技术领域
本发明涉及软件测试技术领域,特别涉及一种单元测试结果的导出方法、装置及电子设备。
背景技术
程序单元是一个应用程序的最小可测试单位。程序单元一般是根据实际情况确定的,在C语言中程序单元指一个函数,在java语言中程序单元指一个类,在图形化软件中程序单元可以指一个窗口或一个菜单等,总而言之,程序单元就是最小的被测试功能模块。单元测试是一种针对计算机程序单元的正确性进行测试的工作。
单元测试是在软件开发过程中要进行的最基本的测试活动,通常来说,程序员每修改一次应用程序就会进行最少一次单元测试,在编写应用程序的过程中很可能要进行多次单元测试,以证实应用程序达到要求。
目前,iOS系统的单元测试一般是在Xcode中进行的,Xcode是一种基于苹果操作系统的非开源集成开发环境,虽然Xcode可以提供单元单元测试结果输出页面,但是此结果只能依赖于Xcode进行显示,且具有特有的文件格式,无法进行结果的导出,因此也便无法将单元单元测试结果作为后续处理任务的输入。
发明内容
本发明实施例的目的在于提供一种单元测试结果的导出方法、装置及电子设备,以导出单元测试结果,便于进行后续处理。具体技术方案如下:
第一方面,本发明实施例提供了一种单元测试结果的导出方法,包括:
对待测试程序单元进行测试,得到原始单元测试结果,其中,所述原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的;
对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,其中,所述目标格式至少包括plist格式;
导出所述处理后的结果信息。
可选的,在所述对待测试程序单元进行测试,得到原始单元测试结果的步骤之前,所述方法还包括:
读取所述待测试程序单元的当前依赖项文件,遍历所述当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称;
读取所述待测试程序单元所属应用程序的最新依赖项文件,遍历所述最新依赖项文件,确定其中包括的依赖库名称,作为第二依赖库名称;
当所述第二依赖库名称中存在与所述第一依赖库名称相同的依赖库名称时,采用该第二依赖库名称的版本号覆盖与其相同的所述第一依赖库名称的版本号;
基于覆盖后的当前依赖项文件,下载对应的依赖库;
所述对待测试程序单元进行测试,得到原始单元测试结果的步骤,包括:
基于所下载的依赖库对待测试程序单元进行测试,得到原始单元测试结果。
可选的,遍历目标依赖项文件确定目标依赖项文件中包括的依赖库名称的方式,包括:
逐行遍历目标依赖项文件,并通过特征字符串分割所遍历的文件行,得到依赖库信息,其中,所述目标依赖项文件为所述当前依赖项文件或所述最新依赖项文件;
确定所述依赖库信息对应的依赖库名称。
可选的,所述原始单元测试结果包括plist格式的测试功能信息;
所述对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息的步骤,包括:
通过预先编写的脚本从所述测试功能信息中提取键值对数据;
将所述键值对数据写入json格式的文件,作为处理后的结果信息。
可选的,所述原始单元测试结果还包括单元测试覆盖率及测试日志信息;
在所述对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息的步骤之后,所述方法还包括:
将所述处理后的结果信息、所述单元测试覆盖率及所述测试日志信息写入预设模板,生成html格式的测试报告。
可选的,在所述对待测试程序单元进行测试,得到原始单元测试结果的步骤之前,所述方法还包括:
读取所述待测试程序单元的配置文件;
确定所述配置文件中导出所述单元测试覆盖率的配置状态是否为开启状态;
如果否,设置所述导出单元测试覆盖率的配置状态为开启状态。
可选的,在所述导出所述处理后的结果信息的步骤之后,所述方法还包括:
读取所述原始单元测试结果,获取测试得到的单元测试覆盖率;
判断所述单元测试覆盖率是否达到预设阈值;
如果否,停止当前运行的与所述待测试程序单元相关的处理任务。
可选的,在所述导出所述处理后的结果信息的步骤之后,所述方法还包括:
根据所述处理后的结果信息,确定所述待测试程序单元的功能是否正常;
如果否,停止当前运行的与所述待测试程序单元相关的处理任务。
第二方面,本发明实施例提供了一种单元测试结果的导出装置,包括:
测试模块,用于对待测试程序单元进行测试,得到原始单元测试结果,其中,所述原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的;
转换模块,用于对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,其中,所述目标格式至少包括plist格式;
导出模块,用于导出所述处理后的结果信息。
可选的,所述装置还包括:
第一依赖项文件读取模块,用于在所述测试模块对待测试程序单元进行测试,得到原始单元测试结果之前,读取所述待测试程序单元的当前依赖项文件,遍历所述当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称;
第二依赖项文件读取模块,用于读取所述待测试程序单元所属应用程序的最新依赖项文件,遍历所述最新依赖项文件,确定其中包括的依赖库名称,作为第二依赖库名称;
依赖库名称替换模块,用于当所述第二依赖库名称中存在与所述第一依赖库名称相同的依赖库名称时,采用该第二依赖库名称的版本号覆盖与其相同的所述第一依赖库名称的版本号;
依赖库下载模块,用于基于覆盖后的当前依赖项文件,下载对应的依赖库;
所述测试模块,包括:
测试子模块,用于基于所下载的依赖库对待测试程序单元进行测试,得到原始单元测试结果。
可选的,所述第一依赖项文件读取模块或所述第二依赖项文件读取模块遍历目标依赖项文件确定目标依赖项文件中包括的依赖库名称的方式,包括:
逐行遍历目标依赖项文件,并通过特征字符串分割所遍历的文件行,得到依赖库信息;确定所述依赖库信息对应的依赖库名称,其中,所述目标依赖项文件为所述当前依赖项文件或所述最新依赖项文件。
可选的,所述原始单元测试结果包括plist格式的测试功能信息;
所述转换模块,包括:
数据提取子模块,用于通过预先编写的脚本从所述测试功能信息中提取键值对数据;
格式转换子模块,用于将所述键值对数据写入json格式的文件,作为处理后的结果信息。
可选的,所述原始单元测试结果还包括单元测试覆盖率及测试日志信息,所述装置还包括:
测试报告生成模块,用于在所述转换模块对所述原始单元测试结果按照预设转换方式进行转换,得到处理后的结果信息之后,将所述处理后的结果信息、所述单元测试覆盖率及所述测试日志信息写入预设模板,生成html格式的测试报告。
可选的,所述装置还包括:
配置文件读取模块,用于在所述测试模块对待测试程序单元进行测试,得到原始单元测试结果之前,读取所述待测试程序单元的配置文件;
配置状态确定模块,用于确定所述配置文件中导出所述单元测试覆盖率的配置状态是否为开启状态;
配置状态设置模块,用于在所述配置状态不是开启状态时,设置所述导出单元测试覆盖率的配置状态为开启状态。
可选的,所述装置还包括:
覆盖率获取模块,用于在所述导出模块导出所述处理后的结果信息之后,读取所述原始单元测试结果,获取测试得到的单元测试覆盖率;
第一判断模块,用于判断所述单元测试覆盖率是否达到预设阈值;
第一执行模块,用于在所述单元测试覆盖率不能达到预设阈值时,停止当前运行的与所述待测试程序单元相关的处理任务。
可选的,所述装置还包括:
功能确定模块,用于在所述导出模块导出所述处理后的结果信息之后,根据所述处理后的结果信息,确定所述待测试程序单元的功能是否正常;
第二执行模块,用于在所述待测试程序单元的功能不正常时,停止当前运行的与所述待测试程序单元相关的处理任务。
在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的单元测试结果的导出方法步骤。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的单元测试结果的导出方法步骤。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的单元测试结果的导出方法步骤。
本发明实施例提供的方案中,电子设备可以对待测试程序单元进行测试,得到原始单元测试结果,对原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,导出处理后的结果信息,其中,原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的,目标格式至少包括plist格式。本发明实施例提供的方案通过Xcode命令行工具进行单元测试,对单元测试的原始单元测试结果中目标格式的信息进行格式转换,可以获得能够导出的格式的结果信息,进而便可以将处理后的结果信息进行导出,以便进行后续处理。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种单元测试结果的导出方法的流程图;
图2为本发明实施例提供的依赖库的更新方式的一种流程图;
图3为本发明实施例提供的依赖库名称确定方式的一种流程图;
图4为图1所示实施例中步骤S102的一种具体流程图;
图5为本发明实施例提供的单元测试覆盖率的导出方式的一种流程图;
图6为本发明实施例提供的处理任务的运行方式的一种流程图;
图7为本发明实施例提供的处理任务的运行方式的另一种流程图;
图8为本发明实施例所提供的一种单元测试结果的导出装置的结构示意图;
图9为本发明实施例所提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
在Xcode系统中进行的单元测试,由于其单元测试结果展示在固定的页面中,不支持导出,因此每次进行单元测试后的单元测试结果也不能在导出之后进行保存,在程序自动化处理的过程中,不利于进行后续处理,为了避免该问题,本发明实施例提供了一种单元测试结果的导出方法、装置、电子设备、计算机可读存储介质及计算机程序产品。
下面首先对本发明实施例提供的一种单元测试结果的导出方法进行介绍。
如图1所示,一种单元测试结果的导出方法,包括:
S101,对待测试程序单元进行测试,得到原始单元测试结果。
其中,所述原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的。
S102,对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息。
其中,所述目标格式至少包括plist格式。
S103,导出所述处理后的结果信息。
可见,本发明实施例提供的方案中,电子设备可以对待测试程序单元进行测试,得到原始单元测试结果,对原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,导出处理后的结果信息,其中,原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的。本发明实施例提供的方案通过Xcode命令行工具进行单元测试,对单元测试的原始单元测试结果中目标格式的信息进行格式转换,可以获得能够导出的格式的结果信息,进而便可以将处理后的结果信息进行导出,以便进行后续处理。
在上述步骤S101中,电子设备可以基于Xcode命令行工具对待测试的程序单元进行测试,进而便可以得到原始单元测试结果。其中,Xcode命令行工具为一组测试命令,其可以实现代码的编译、单元测试、运行等功能的一组命令。对待测试的程序单元进行测试的方式可以为任意基于Xcode命令行工具进行的测试方式,在此不做具体限定及说明。例如,电子设备可以通过xcodebuild命令运行待测试的程序单元的测试程序,并输出原始单元测试结果到指定目录B。
上述原始单元测试结果中可以包含plist格式的测试功能信息及文本格式的测试日志信息等。由于原始单元测试结果是基于Xcode命令行工具进行程序单元测试得到的,其中包括的目标格式的信息可以按照预设的格式转换方式进行转换后导出,该目标格式至少包括plist格式。
所以,电子设备可以将目标格式的信息转换为可以进行导出存储的格式信息,这样,得到的处理后的结果信息便可以在其它系统环境中进行显示和进一步处理。
电子设备获得上述处理后的结果信息后,便可以执行上述步骤S103,即可以导出该处理后的结果信息,该处理后的结果信息可以反映待测试程序单元的功能是否正常。
作为本发明实施例的一种实施方式,如图2所示,在上述步骤S101之前,上述方法还可以包括:
S201,读取所述待测试程序单元的当前依赖项文件,遍历所述当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称。
在应用程序的开发过程中,很多功能模块存在已编写完成的程序,因此开发者在编写需要实现这些功能模块对应的功能的应用程序时,可以使用这些功能模块对应的程序作为子程序,也就是,使用已有的功能模块对应的依赖库中的依赖文件的内容作为需要编写的程序命令行,以节约编写应用程序所需的时间。
由于程序编写时使用依赖文件的内容,所以对测序进行测试时需要依赖相应的依赖库,而依赖项文件包含待测试程序所依赖的所有依赖库相关的信息,依赖项文件可以为Podfile文件。因此,电子设备可以读取待测试程序单元的当前依赖项文件,并遍历该当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称。
在一种实施方式中,电子设备确定上述第一依赖库名称后,可以将确定的第一依赖库名称存储于一个预先设置数组A中,以便后续调用。
S202,读取所述待测试程序单元所属应用程序的最新依赖项文件,遍历所述最新依赖项文件,确定其中包括的依赖库名称,作为第二依赖库名称。
对于上述待测试程序单元所属的应用程序,每当依赖库发生变化后,为了保证该应用程序可以被正常执行,其使用的依赖库文件会被替换为最新的依赖库文件。
且由于上述待测试程序单元属于该应用程序的一部分,所以该应用程序使用的依赖库文件包含上述待测试程序单元所使用的依赖库文件,所以电子设备可以读取该应用程序的依赖项文件,并通过遍历的方式找出其中的依赖库信息,以确定其中所使用的依赖库的名称,即上述第二依赖库名称。
上述步骤S201及步骤S202的执行顺序不存在先后的限定,也就是说,可以先执行上述步骤S201,再执行步骤S202,也可以先执行上述步骤S202,再执行步骤S201,还可以同时执行上述步骤S201及步骤S202,在此不做具体限定。
S203,当所述第二依赖库名称中存在与所述第一依赖库名称相同的依赖库名称时,采用该第二依赖库名称的版本号覆盖与其相同的所述第一依赖库名称的版本号。
由于当前依赖文件中所包含的依赖文件可能是已有的功能模块对应的依赖库中的依赖文件,而该依赖库很可能已经更新,所以在对待测试程序单元进行测试时,待测试程序单元所依赖的依赖库很可能已经更新,因此便需要更新进行单元测试所使用的依赖库的版本号,以保证测试的顺利进行。
那么,当电子设备确定上述第一依赖库名称及第二依赖库名称之后,便可以将第一依赖库名称与第二依赖库名称进行比对,以确定第二依赖库名称中与第一依赖库名称相同的依赖库名称。
在一种实施方式中,电子设备可以将上述第一依赖库名称存储于数组A中,当确定上述第二依赖库名称后,便可以与数组A中保存的依赖库名称进行对比,以确定其中与第二依赖库名称相同的依赖库名称。进而,电子设备便可以使用第二依赖库名称的版本号覆盖与其相同的第一依赖库名称的版本号。
例如,第一依赖库名称与第二依赖库名称中均有一个依赖库A1,在第一依赖库名称中依赖库A1的版本号为1.0,在第二依赖库名称中的依赖库A1的版本号为2.0,便可以将第一依赖库名称中依赖库A1的版本号更改为2.0。
S204,基于覆盖后的当前依赖项文件,下载对应的依赖库。
当电子设备执行上述步骤S203之后,上述待测试程序单元的当前依赖项文件中,所包含的依赖库名称对应的依赖库的版本号被替换为了最新的依赖库的版本号,因此电子设备便可以根据依赖库名称及版本号下载对应的依赖库,即可以执行步骤S204。
相应的,上述步骤S101可以包括:
基于所下载的依赖库对待测试程序单元进行测试,得到原始单元测试结果。
当电子设备获得最新的依赖库后,便可以基于最新的依赖库对上述待测试程序单元进行测试,进而便可以得到上述原始单元测试结果。
可见,本发明实施例提供的方案中,电子设备可以读取待测试程序单元的当前依赖项文件,遍历当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称,读取待测试程序单元所属应用程序的最新依赖项文件,遍历最新依赖项文件,确定其中包括的依赖库名称,作为第二依赖库名称,当第二依赖库名称中存在与第一依赖库名称相同的依赖库名称时,采用该第二依赖库名称的版本号覆盖与其相同的第一依赖库名称的版本号,基于覆盖后的当前依赖项文件,下载对应的依赖库,基于所下载的依赖库对待测试程序单元进行测试,得到原始单元测试结果。通过上述方式,电子设备便可以将待测试程序单元的依赖库更新为最新的依赖库,进而,便可以基于最新的依赖库进行测试,得到单元测试结果,保证单元测试结果的准确性。
作为本发明实施例的一种实施方式,如图3所示,遍历目标依赖项文件确定目标依赖项文件中包括的依赖库名称的方式可以包括:
S301,逐行遍历目标依赖项文件,并通过特征字符串分割所遍历的文件行,得到依赖库信息。
其中,目标依赖项文件为上述当前依赖项文件或最新依赖项文件。也就是说,从上述当前依赖项文件和最新依赖项文件中确定依赖库名称的方式可以相同。
依赖库信息一般包含前缀、依赖库名称、依赖库版本号及其它信息等,并由一定的形式组成,例如,上述依赖库信息可以为:‘pod’‘依赖库名称’‘依赖库版本号’‘其他信息’。
上述前缀、依赖库名称、依赖库版本号及其它信息均可以以字符的形式存在于依赖项文件中,其前缀可以为相同的字符以表示该字符串为依赖库信息,因此具有一定的特征,构成特征字符串。
因此,电子设备可以读取上述目标依赖项文件,进行逐行遍历的同时,通过特征字符串分割所遍历的文件行,进而得到依赖库信息。
S302,确定所述依赖库信息对应的依赖库名称。
当电子设备遍历上述依赖项文件并确定其中包含的依赖库信息后,便可以从包含上述依赖项信息的特征字符串中确定该依赖库信息对应的依赖库名称。
例如,特征字符串前缀为‘pod’,组成形式为:前缀,依赖库名称,依赖库版本号,其他信息。那么电子设备确定某特征字符串为‘pod’‘a’‘3.0’‘c’,那么便可以基于该特征字符串确定该依赖库信息对应的依赖库名称为a。
可见,本发明实施例提供的方案中,电子设备可以逐行遍历目标依赖项文件,并通过特征字符串分割所遍历的文件行,得到依赖库信息,确定所述依赖库信息对应的依赖库名称,其中,目标依赖项文件为当前依赖项文件或最新依赖项文件。通过这种方式,电子设备可以快速准确的识别出依赖项文件中包含的全部的依赖库名称,进而可以进一步提高待测试程序单元的测试准确性。
作为本发明实施例的一种实施方式,上述原始单元测试结果可以包括plist格式的测试功能信息。
基于Xcode命令行工具进行程序单元测试得到的原始单元测试结果中包含plist格式的测试功能信息,plist格式的测试功能信息为键值对形式的数据。
相应的,如图4所示,上述步骤S102可以包括:
S401,通过预先编写的脚本从所述测试功能信息中提取键值对数据。
由于采用系统命令对键值对形式的数据进行处理是非常困难的,因此电子设备可以通过执行预先编写的脚本程序,将该测试功能信息中的键值对数据提取出来,以便后续处理。
在一种实施方式中,电子设备可以通过基于swift编程语言预先编写脚本程序,进而通过运行该脚本程序从测试功能信息中提取键值对数据。
S402,将所述键值对数据写入json格式的文件,作为处理后的结果信息。
json格式是一种便于电子设备识别和解析的文件格式,通过将数字、对象、数组等不同格式的数据写入json格式的文件,便可以将这些数据转化为字符串,以便于进行数据处理及传递。
因此,当电子设备获取上述键值对数据之后,便可以将键值对数据写入json文件,作为处理后的结果信息。这样,电子设备便可以将上述键值对数据转化为字符串,进而便可以在程序或者设备间进行数据传递以及处理。
可见,本发明实施例提供的方案中,原始单元测试结果可以包括plist格式的测试功能信息,电子设备可以通过预先编写的脚本从所述测试功能信息中提取键值对数据,将该键值对数据写入json格式的文件,作为处理后的结果信息,通过这种方式,可以将不易处理的plist格式的测试功能信息,转化为便于传递的字符串,进而便可以导出结果信息。
作为本发明实施例的一种实施方式,上述原始单元测试结果还可以包括单元测试覆盖率及测试日志信息。
在上述原始单元测试结果中,可以包含单元测试覆盖率、测试日志信息及上述plist格式的测试功能信息。
在电子设备对对待测试程序进行测试的过程中,由于某些程序逻辑是包括多个分支的,而待测试程序单元在进行测试时一般只运行其中一个分支,因此会导致电子设备无法执行全部程序。单元测试覆盖率即表示在对待测试程序单元进行测试的过程中,执行完成的程序在待测试程序单元的所有行中所占的比例,可以表征待测试程序单元在测试中被测试的命令行的比例。
单元测试覆盖率信息可以从原始单元测试结果中获取,然后将其转化为数字格式的数据,例如,10、20、30或80等,测试日志信息一般是txt格式的文件,所以二者均可以直接导出。
在一种实施方式中,当电子设备获得上述单元测试覆盖率信息后,可以将该单元测试覆盖率信息存储于预先设置不同于原始单元测试结果存储位置的其他存储位置,例如,可以将该单元测试覆盖率信息存储于目录C中。
相应的,在上述步骤S102之后,上述方法还可以包括:
将所述处理后的结果信息、所述单元测试覆盖率及所述测试日志信息写入预设模板,生成html格式的测试报告。
为了方便测试人员对单元测试结果进行查看,电子设备可以将上述处理后的结果信息、单元测试覆盖率及测试日志信息写入预设的html格式的模板,生成便于查看的html格式的测试报告,其中,预设的html格式的模板可以为html5.0模板等,在此不做具体限定。
可见,本发明实施例提供的方案中,原始单元测试结果还可以包括单元测试覆盖率及测试日志信息,进而,电子设备可以将目标格式的结果信息、单元测试覆盖率及测试日志信息写入预设模板,生成html格式的测试报告。通过这种方式,电子设备可以将单元单元测试结果进行展示,便于测试人员发现该待测试程序单元存在的问题。
作为本发明实施例的一种实施方式,如图5所示,在上述步骤S101之前,上述方法还可以包括:
S501,读取所述待测试程序单元的配置文件。
电子设备对待测试程序单元进行测试时,单元测试覆盖率是电子设备进行统计得出的,这个过程会影响待测试程序单元的测试效率,因此为了方便根据测试需求设置是否需要统计单元测试覆盖率,可以通过待测试程序单元的配置文件对单元测试覆盖率的配置状态进行设置,其中,配置状态即用于表征是否需要统计单元测试覆盖率。进而,为了确定单元测试覆盖率的配置状态,电子设备便可以读取该配置文件。
S502,确定所述配置文件中导出所述单元测试覆盖率的配置状态是否为开启状态;如果是,对待测试程序单元进行测试;如果否,执行步骤S503。
在测试人员需要获取待测试程序单元的单元测试覆盖率时,在上述配置文件中可以设置导出单元测试覆盖率的配置状态为开启状态,相反的,当测试人员不需要获取待测试程序单元的单元测试覆盖率时,可以在上述配置文件中设置导出单元测试覆盖率的配置状态为关闭状态。
这样,当电子设备读取上述待测试程序单元的配置文件后,可以基于该配置文件确定配置状态是否为开启状态,若此时需要获取单元测试覆盖率信息,在电子设备便需要设置该配置状态为开启状态,那么若电子设备确定该配置状态为关闭状态,便可以执行步骤S503。若电子设备确定该配置状态为开启状态,那么便可以执行对待测试程序单元进行测试的步骤。
在一种实施方式中,上述配置文件中包含一个状态参数,该状态参数用于表示单元测试覆盖率的配置状态,这样,电子设备可以基于该状态参数确定上述配置状态是否为开启状态。
例如,当状态参数为1时,上述配置状态为开启状态,当状态参数为0时,上述配置状态为关闭状态。或者,当状态参数为T时,上述配置状态为开启状态,当状态参数为F时,上述配置状态为关闭状态,以上都是合理的。
S503,设置所述导出单元测试覆盖率的配置状态为开启状态。
当电子设备确定上述配置文件中导出所述单元测试覆盖率的配置状态不是开启状态时,为了能够获得单元测试覆盖率,便可以设置导出单元测试覆盖率的配置状态为开启状态,进而,在对该测试程序单元进行测试之后,便可以获得单元测试覆盖率。
可见,本发明实施例提供的方案中,电子设备可以读取待测试程序单元的配置文件,确定配置文件中导出单元测试覆盖率的配置状态是否为开启状态,如果是,对待测试程序单元进行测试,如果否,设置导出单元测试覆盖率的配置状态为开启状态。通过这种方式,电子设备可以在需要获取单元测试覆盖率时,设置上述配置状态为开启状态,在不需要获取单元测试覆盖率时,设置上述配置状态为关闭状态,进而可以提高测试效率。
作为本发明实施例的一种实施方式,如图6所示,在上述步骤S103之后,上述方法还可以包括:
S601,读取所述原始单元测试结果,获取测试得到的单元测试覆盖率。
由于单元测试覆盖率是电子设备对待测试程序进行测试的过程中,执行的程序命令行在待测试程序单元的所有的命令行中所占的比例,可以表征待测试程序单元的功能的好坏,所以当电子设备获得原始单元测试结果后,可以从原始单元测试结果中获取单元测试覆盖率。
S602,判断所述单元测试覆盖率是否达到预设阈值,如果是,继续运行当前运行的与所述待测试程序单元相关的处理任务,如果否,执行步骤S603。
当单元测试覆盖率很低时,可以说明待测试程序单元中无法被执行的程序命令行的数量较多,这种情况下虽然电子设备仍然有可能完成待测试程序单元的测试,但是该待测试程序单元可能无法实现其功能。
当单元测试覆盖率达到预设阈值时,说明该待测试程序单元中无法被执行的程序命令行的数量较少或者不存在无法被执行的程序命令行,也就可以认为该待测试程序单元可以实现其功能。
因此,电子设备可以将单元测试覆盖率与预设阈值比较,如果单元测试覆盖率低于该预设阈值,进而便可以执行步骤S603。如果单元测试覆盖率不低于该预设阈值,由于待测试程序单元可以实现其功能,则可以继续运行当前运行的与待测试程序单元相关的处理任务。
S603,停止当前运行的与所述待测试程序单元相关的处理任务。
当电子设备确定上述单元测试覆盖率不能达到上述预设阈值时,说明该待测试程序单元无法实现其功能,那么当前运行的与待测试程序单元相关的处理任务也就无法顺利完成,因此电子设备便可以停止当前运行的与该待测试程序单元有关的处理任务。
可见,本发明实施例提供的方案中,电子设备可以读取原始单元测试结果,获取测试得到的单元测试覆盖率,判断所述单元测试覆盖率是否达到预设阈值,如果是,继续运行,如果否,停止当前运行的与所述待测试程序单元相关的处理任务。通过上述方式,电子设备可以在待测试程序单元不能实现其功能时,停止当前运行的与该待测试程序单元有关的处理任务,避免运行该处理任务造成资源浪费的问题。
作为本发明实施例的一种实施方式,如图7所示,在上述步骤S103之后,上述方法还可以包括:
S701,根据所述处理后的结果信息,确定所述待测试程序单元的功能是否正常,如果是,继续运行当前运行的与所述待测试程序单元相关的处理任务,如果否,执行步骤S702。
由于上述处理后的结果信息可以反应待测试程序单元的功能是否正常,因此,当电子设备获得该结果信息后,便可以通过该结果信息确定该待测试程序单元的功能是否正常,如果是正常的,便可以继续运行当前运行的与待测试程序单元相关的处理任务,如果不正常,电子设备便可以确定该待测试程序单元无法实现其功能,因此电子设备可以执行步骤S702。
S702,停止当前运行的与所述待测试程序单元相关的处理任务。
当电子设备确定上述待测试程序单元的功能不正常时,便可以说明该待测试程序单元无法实现其功能,那么当前运行的与待测试程序单元相关的处理任务也就无法顺利完成,因此电子设备便可以停止当前运行的与该待测试程序单元有关的处理任务。
可见,本发明实施例提供的方案中,电子设备可以根据处理后的结果信息,确定待测试程序单元的功能是否正常,如果是,继续运行,如果否,停止当前运行的与所述待测试程序单元相关的处理任务。通过上述方式,电子设备可以基于处理后的结果信息确定该待测试程序单元的功能是否正常,在不能实现其功能时停止当前运行的与该待测试程序单元有关的处理任务,避免运行该处理任务造成资源浪费的问题。
相应于本发明实施例提供的一种单元测试结果的导出方法,本发明实施例还提供了一种单元测试结果的导出装置,如图8所示,可以包括:
测试模块810,用于对待测试程序单元进行测试,得到原始单元测试结果。
其中,所述原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的。
转换模块820,用于对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息。
其中,所述目标格式至少包括plist格式。
导出模块830,用于导出所述处理后的结果信息。
可见,本发明实施例提供的方案中,电子设备可以对待测试程序单元进行测试,得到原始单元测试结果,对原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,导出处理后的结果信息,其中,原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的,目标格式至少包括plist格式。本发明实施例提供的方案通过Xcode命令行工具进行单元测试,对单元测试的原始单元测试结果中目标格式的信息进行格式转换,可以获得能够导出的格式的结果信息,进而便可以将处理后的结果信息进行导出,以便进行后续处理。
作为本发明实施例的一种实施方式,上述装置还可以包括:
第一依赖项文件读取模块(图8中未示出),用于在所述测试模块对待测试程序单元进行测试,得到原始单元测试结果之前,读取所述待测试程序单元的当前依赖项文件,遍历所述当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称;
第二依赖项文件读取模块(图8中未示出),用于读取所述待测试程序单元所属应用程序的最新依赖项文件,遍历所述最新依赖项文件,确定其中包括的依赖库名称,作为第二依赖库名称;
依赖库名称替换模块(图8中未示出),用于当所述第二依赖库名称中存在与所述第一依赖库名称相同的依赖库名称时,采用该第二依赖库名称的版本号覆盖与其相同的所述第一依赖库名称的版本号;
依赖库下载模块(图8中未示出),用于基于覆盖后的当前依赖项文件,下载对应的依赖库;
上述测试模块810,可以包括:
测试子模块(图8中未示出),用于基于所下载的依赖库对待测试程序单元进行测试,得到原始单元测试结果。
作为本发明实施例的一种实施方式,上述第一依赖项文件读取模块或上述第二依赖项文件读取模块遍历目标依赖项文件确定目标依赖项文件中包括的依赖库名称的方式,可以包括:
逐行遍历目标依赖项文件,并通过特征字符串分割所遍历的文件行,得到依赖库信息;确定所述依赖库信息对应的依赖库名称,其中,所述目标依赖项文件为所述当前依赖项文件或所述最新依赖项文件。
作为本发明实施例的一种实施方式,上述原始单元测试结果可以包括plist格式的测试功能信息。
上述转换模块,可以包括:
数据提取子模块(图8中未示出),用于通过预先编写的脚本从所述测试功能信息中提取键值对数据;
格式转换子模块(图8中未示出),用于将所述键值对数据写入json格式的文件,作为处理后的结果信息。
作为本发明实施例的一种实施方式,上述原始单元测试结果包括还可以包括单元测试覆盖率及测试日志信息,上述装置还可以包括:
测试报告生成模块(图8中未示出),用于在所述转换模块对所述原始单元测试结果按照预设转换方式进行转换,得到处理后的结果信息之后,将所述目标格式的结果信息、所述单元测试覆盖率及所述测试日志信息写入预设模板,生成html格式的测试报告。
作为本发明实施例的一种实施方式,上述装置还可以包括:
配置文件读取模块(图8中未示出),用于在所述测试模块对待测试程序单元进行测试,得到原始单元测试结果之前,读取所述待测试程序单元的配置文件;
配置状态确定模块(图8中未示出),用于确定所述配置文件中导出所述单元测试覆盖率的配置状态是否为开启状态;
配置状态设置模块(图8中未示出),用于在所述配置状态不是开启状态时,设置所述导出单元测试覆盖率的配置状态为开启状态。
作为本发明实施例的一种实施方式,上述装置还可以包括:
覆盖率获取模块(图8中未示出),用于在所述导出模块导出所述处理后的结果信息之后,读取所述原始单元测试结果,获取测试得到的单元测试覆盖率;
第一判断模块(图8中未示出),用于判断所述单元测试覆盖率是否达到预设阈值;
第一执行模块(图8中未示出),用于在所述单元测试覆盖率不能达到预设阈值时,停止当前运行的与所述待测试程序单元相关的处理任务。
作为本发明实施例的一种实施方式,上述装置还可以包括:
功能确定模块(图8中未示出),用于在所述导出模块导出所述处理后的结果信息之后,根据所述处理后的结果信息,确定所述待测试程序单元的功能是否正常;
第二执行模块(图8中未示出),用于在所述待测试程序单元的功能不正常时,停止当前运行的与所述待测试程序单元相关的处理任务。
本发明实施例还提供了一种电子设备,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现如下步骤:
对待测试程序单元进行测试,得到原始单元测试结果。
其中,所述原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的。
对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息。
其中,所述目标格式至少包括plist格式。
导出所述处理后的结果信息。
可见,本发明实施例提供的方案中,电子设备可以对待测试程序单元进行测试,得到原始单元测试结果,对原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,导出处理后的结果信息,其中,原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的,目标格式为至少包括plist格式。本发明实施例提供的方案通过Xcode命令行工具进行单元测试,对单元测试的原始单元测试结果中目标格式的信息进行格式转换,可以获得能够导出的格式的结果信息,进而便可以将处理后的结果信息进行导出,以便进行后续处理。
作为本发明实施例的一种实施方式,在上述对待测试程序单元进行测试,得到原始单元测试结果的步骤之前,上述方法还可以包括:
读取所述待测试程序单元的当前依赖项文件,遍历所述当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称。
读取所述待测试程序单元所属应用程序的最新依赖项文件,遍历所述最新依赖项文件,确定其中包括的依赖库名称,作为第二依赖库名称。
当所述第二依赖库名称中存在与所述第一依赖库名称相同的依赖库名称时,采用该第二依赖库名称的版本号覆盖与其相同的所述第一依赖库名称的版本号。
基于覆盖后的当前依赖项文件,下载对应的依赖库。
上述对待测试程序单元进行测试,得到原始单元测试结果的步骤,可以包括:
基于所下载的依赖库对待测试程序单元进行测试,得到原始单元测试结果。
作为本发明实施例的一种实施方式,遍历目标依赖项文件确定目标依赖项文件中包括的依赖库名称的方式,包括:
逐行遍历目标依赖项文件,并通过特征字符串分割所遍历的文件行,得到依赖库信息。
其中,所述目标依赖项文件为所述当前依赖项文件或所述最新依赖项文件。
确定所述依赖库信息对应的依赖库名称。
作为本发明实施例的一种实施方式,上述原始单元测试结果可以包括plist格式的测试功能信息。
上述对所述原始单元测试结果按照预设转换方式进行转换,得到处理后的结果信息的步骤,可以包括:
通过预先编写的脚本从所述测试功能信息中提取键值对数据;
将所述键值对数据写入json格式的文件,作为处理后的结果信息。
作为本发明实施例的一种实施方式,上述原始单元测试结果还可以包括单元测试覆盖率及测试日志信息。
在上述对所述原始单元测试结果按照预设转换方式进行转换,得到处理后的结果信息的步骤之后,上述方法还可以包括:
将所述处理后的结果信息、所述单元测试覆盖率及所述测试日志信息写入预设模板,生成html格式的测试报告。
作为本发明实施例的一种实施方式,在上述对待测试程序单元进行测试,得到原始单元测试结果的步骤之前,上述方法还可以包括:
读取所述待测试程序单元的配置文件;
确定所述配置文件中导出所述单元测试覆盖率的配置状态是否为开启状态;
如果否,设置所述导出单元测试覆盖率的配置状态为开启状态。
作为本发明实施例的一种实施方式,在上述导出所述处理后的结果信息的步骤之后,上述方法还可以包括:
读取所述原始单元测试结果,获取测试得到的单元测试覆盖率;
判断所述单元测试覆盖率是否达到预设阈值;
如果否,停止当前运行的与所述待测试程序单元相关的处理任务。
作为本发明实施例的一种实施方式,在上述导出所述处理后的结果信息的步骤之后,上述方法还可以包括:
根据所述处理后的结果信息,确定所述待测试程序单元的功能是否正常;
如果否,停止当前运行的与所述待测试程序单元相关的处理任务。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的单元测试结果的导出方法。
可见,本发明实施例提供的方案中,电子设备可以对待测试程序单元进行测试,得到原始单元测试结果,对原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,导出处理后的结果信息,其中,原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的,目标格式至少包括plist格式。本发明实施例提供的方案通过Xcode命令行工具进行单元测试,对单元测试的原始单元测试结果中目标格式的信息进行格式转换,可以获得能够导出的格式的结果信息,进而便可以将处理后的结果信息进行导出,以便进行后续处理。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的单元测试结果的导出方法。
可见,本发明实施例提供的方案中,电子设备可以对待测试程序单元进行测试,得到原始单元测试结果,对原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,导出处理后的结果信息,其中,原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的,目标格式至少包括plist格式。本发明实施例提供的方案通过Xcode命令行工具进行单元测试,对单元测试的原始单元测试结果中目标格式的信息进行格式转换,可以获得能够导出的格式的结果信息,进而便可以将处理后的结果信息进行导出,以便进行后续处理。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种单元测试结果的导出方法,其特征在于,包括:
对待测试程序单元进行测试,得到原始单元测试结果,其中,所述原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的;
对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,其中,所述目标格式至少包括plist格式;
导出所述处理后的结果信息;
在所述对待测试程序单元进行测试,得到原始单元测试结果的步骤之前,所述方法还包括:
读取所述待测试程序单元的当前依赖项文件,遍历所述当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称;
读取所述待测试程序单元所属应用程序的最新依赖项文件,遍历所述最新依赖项文件,确定其中包括的依赖库名称,作为第二依赖库名称;
当所述第二依赖库名称中存在与所述第一依赖库名称相同的依赖库名称时,采用该第二依赖库名称的版本号覆盖与其相同的所述第一依赖库名称的版本号;
基于覆盖后的当前依赖项文件,下载对应的依赖库;
所述对待测试程序单元进行测试,得到原始单元测试结果的步骤,包括:
基于所下载的依赖库对待测试程序单元进行测试,得到原始单元测试结果。
2.根据权利要求1所述的方法,其特征在于,遍历目标依赖项文件确定目标依赖项文件中包括的依赖库名称的方式,包括:
逐行遍历目标依赖项文件,并通过特征字符串分割所遍历的文件行,得到依赖库信息,其中,所述目标依赖项文件为所述当前依赖项文件或所述最新依赖项文件;
确定所述依赖库信息对应的依赖库名称。
3.根据权利要求1所述的方法,其特征在于,所述原始单元测试结果包括plist格式的测试功能信息;
所述对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息的步骤,包括:
通过预先编写的脚本从所述测试功能信息中提取键值对数据;
将所述键值对数据写入json格式的文件,作为处理后的结果信息。
4.根据权利要求3所述的方法,其特征在于,所述原始单元测试结果还包括单元测试覆盖率及测试日志信息;
在所述对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息的步骤之后,所述方法还包括:
将所述处理后的结果信息、所述单元测试覆盖率及所述测试日志信息写入预设模板,生成html格式的测试报告。
5.根据权利要求4所述的方法,其特征在于,在所述对待测试程序单元进行测试,得到原始单元测试结果的步骤之前,所述方法还包括:
读取所述待测试程序单元的配置文件;
确定所述配置文件中导出所述单元测试覆盖率的配置状态是否为开启状态;
如果否,设置所述导出所述单元测试覆盖率的配置状态为开启状态。
6.根据权利要求4所述的方法,其特征在于,在所述导出所述处理后的结果信息的步骤之后,所述方法还包括:
读取所述原始单元测试结果,获取测试得到的单元测试覆盖率;
判断所述单元测试覆盖率是否达到预设阈值;
如果否,停止当前运行的与所述待测试程序单元相关的处理任务。
7.根据权利要求1所述的方法,其特征在于,在所述导出所述处理后的结果信息的步骤之后,所述方法还包括:
根据所述处理后的结果信息,确定所述待测试程序单元的功能是否正常;
如果否,停止当前运行的与所述待测试程序单元相关的处理任务。
8.一种单元测试结果的导出装置,其特征在于,包括:
测试模块,用于对待测试程序单元进行测试,得到原始单元测试结果,其中,所述原始单元测试结果为基于Xcode命令行工具进行程序单元测试得到的;
转换模块,用于对所述原始单元测试结果中目标格式的信息按照预设转换方式进行转换,得到处理后的结果信息,其中,所述目标格式至少包括plist格式;
导出模块,用于导出所述处理后的结果信息;
所述装置还包括:
第一依赖项文件读取模块,用于在所述测试模块对待测试程序单元进行测试,得到原始单元测试结果之前,读取所述待测试程序单元的当前依赖项文件,遍历所述当前依赖项文件,确定其中包括的依赖库名称,作为第一依赖库名称;
第二依赖项文件读取模块,用于读取所述待测试程序单元所属应用程序的最新依赖项文件,遍历所述最新依赖项文件,确定其中包括的依赖库名称,作为第二依赖库名称;
依赖库名称替换模块,用于当所述第二依赖库名称中存在与所述第一依赖库名称相同的依赖库名称时,采用该第二依赖库名称的版本号覆盖与其相同的所述第一依赖库名称的版本号;
依赖库下载模块,用于基于覆盖后的当前依赖项文件,下载对应的依赖库;
所述测试模块,包括:
测试子模块,用于基于所下载的依赖库对待测试程序单元进行测试,得到原始单元测试结果。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911272501.4A CN111104318B (zh) | 2019-12-12 | 2019-12-12 | 一种单元测试结果的导出方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911272501.4A CN111104318B (zh) | 2019-12-12 | 2019-12-12 | 一种单元测试结果的导出方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104318A CN111104318A (zh) | 2020-05-05 |
CN111104318B true CN111104318B (zh) | 2023-06-02 |
Family
ID=70421815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911272501.4A Active CN111104318B (zh) | 2019-12-12 | 2019-12-12 | 一种单元测试结果的导出方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104318B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407973A (zh) * | 2014-11-25 | 2015-03-11 | 珠海格力电器股份有限公司 | 一种自动化单元测试的实现方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280442B1 (en) * | 2011-01-27 | 2016-03-08 | Trimble Navigation Limited | System and method for generating coverage reports for software unit tests |
US9329858B2 (en) * | 2014-09-30 | 2016-05-03 | Linkedin Corporation | Managing access to resource versions in shared computing environments |
CN104484201A (zh) * | 2014-12-11 | 2015-04-01 | 北京国双科技有限公司 | 用于ios设备的软件工具开发包更新方法和装置 |
CN106325970A (zh) * | 2016-10-17 | 2017-01-11 | 宁德时代新能源科技股份有限公司 | 编译方法和编译系统 |
CN108469957A (zh) * | 2018-03-08 | 2018-08-31 | 平安科技(深圳)有限公司 | 应用打包上传方法、装置、计算机设备及存储介质 |
CN108628751B (zh) * | 2018-05-17 | 2021-06-11 | 北京三快在线科技有限公司 | 一种无用依赖项检测方法及装置 |
CN109726124B (zh) * | 2018-12-20 | 2023-06-02 | 北京爱奇艺科技有限公司 | 测试系统、测试方法、管理装置、测试装置及计算设备 |
CN110334023B (zh) * | 2019-06-28 | 2023-09-26 | 京东科技控股股份有限公司 | 一种应用于网站的测试流程确定方法和装置 |
-
2019
- 2019-12-12 CN CN201911272501.4A patent/CN111104318B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407973A (zh) * | 2014-11-25 | 2015-03-11 | 珠海格力电器股份有限公司 | 一种自动化单元测试的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111104318A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829593B (zh) | 代码覆盖率计算分析方法、装置、设备及存储介质 | |
US20170132119A1 (en) | Method and device for retrieving test case based on code coverage | |
US9152731B2 (en) | Detecting a broken point in a web application automatic test case | |
CN110955428A (zh) | 一种页面显示方法、装置、电子设备及介质 | |
US20170228220A1 (en) | Self-healing automated script-testing tool | |
CN110781091B (zh) | 应用程序的测试方法、装置、电子设备及存储介质 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN108763094B (zh) | 测试用例生成方法、装置、设备及存储介质 | |
US10824541B1 (en) | System and method for test data fabrication | |
US20130179867A1 (en) | Program Code Analysis System | |
CN112783800B (zh) | 一种测试用例筛选方法及装置 | |
CN113760729A (zh) | 一种代码检测方法和装置 | |
CN111427771A (zh) | 一种代码覆盖率分析方法、设备、服务器及可读存储介质 | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN111240987B (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN109189688B (zh) | 一种测试用例脚本的生成方法、生成装置及电子设备 | |
CN112231197A (zh) | 一种页面测试的方法、装置和存储介质 | |
CN111399849B (zh) | 一种应用程序安装包的确定方法及系统 | |
CN111651346B (zh) | 前端组件的测试方法、装置、存储介质及计算机设备 | |
CN110888641B (zh) | 一种脚本自动生成方法、装置、服务器及存储介质 | |
CN111104318B (zh) | 一种单元测试结果的导出方法、装置及电子设备 | |
CN112084108A (zh) | 一种测试脚本生成方法、装置及相关组件 | |
CN109474822B (zh) | 一种安卓电视多国语言自动化测试的方法及装置 | |
CN116431467A (zh) | 页面测试方法、装置、设备及介质 | |
CN116016270A (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 |