一种单元测试方法、装置、系统及存储介质与流程

文档序号:32611521发布日期:2022-12-20 20:06阅读:31来源:国知局
一种单元测试方法、装置、系统及存储介质与流程

1.本发明涉及测试技术领域,尤其涉及一种单元测试方法、装置、系统及存储介质。


背景技术:

2.单元测试是指对软件中的最小可测试单元进行检查和验证,是项目开发过程中必不可少的一环,如何快速构建并执行单元测试,也是很多开发人员思考的内容。目前比较常见的单元测试自动构建流程是开发人员写好代码提交到git仓库,然后进行软件项目的构建与测试,将测试结果,以及代码覆盖率等数据解析,发送到指定的数据平台。
3.虽然现有的单元测试方式已经实现了自动触发测试,但是在实际运用过程中,由于maven多模块项目的项目数量多,且每个项目的插件以及测试类的配置均不相同,在生成代码覆盖率时往往需要手动维护整个项目目录的配置,耗费了大量的人力物力,导致单元测试的维护效率较低。


技术实现要素:

4.鉴于上述现有技术的不足,本发明的目的在于提供一种可应用于科技金融或其它相关领域的单元测试方法、装置、系统及存储介质,旨在提高单元测试的维护效率,降低人力维护成本。
5.本发明的技术方案如下:
6.一种单元测试方法,包括:
7.当监听到有项目代码提交时,拉取所述项目代码;
8.在项目构建时对所述项目代码的pom文件进行更新,以在所述pom文件中添加覆盖率插件;
9.遍历所述项目代码的目录,在预设目录下创建测试类;
10.对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告。
11.在一个实施例中,所述当监听到有项目代码提交时,拉取所述项目代码,包括:
12.监听git仓库中是否存在项目代码提交;
13.若存在,则获取该项目代码的分支号并传递至持续集成工具;
14.控制所述持续集成工具通过所述分支号拉取所述项目代码。
15.在一个实施例中,所述在项目构建时对所述项目代码的pom文件进行更新,以在所述pom文件中添加覆盖率插件,包括:
16.确认所述项目代码是否为多模块项目;
17.若为多项目模块,则分别获取父pom文件和子pom文件;否则直接获取pom文件;
18.对获取到的pom文件添加覆盖率插件完成更新。
19.在一个实施例中,所述对获取到的pom文件添加覆盖率插件完成更新,包括:
20.确认获取到的pom文件中是否已添加覆盖率插件;
21.若未添加,则直接添加预设覆盖率插件,若已添加,则确认已添加的覆盖率插件是否符合预设规范;
22.若不符合,则清除已添加的覆盖率插件并添加所述预设覆盖率插件。
23.在一个实施例中,所述遍历所述项目代码的目录,在预设目录下创建测试类,包括:
24.遍历所述项目代码的目录,确认是否存在src目录;
25.若存在src目录,则确认所述src目录下是否存在test目录,若不存在src目录,则结束创建;
26.若存在test目录,则确认所述test目录下是否已存在测试类,当不存在时创建所述测试类;若不存在test目录,则创建test目录并创建所述测试类。
27.在一个实施例中,所述对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告之后,所述方法还包括:
28.识别每个目录下是否存在测试报告;
29.将所有存在测试报告的目录进行拼接并解析,得到所述项目代码的测试数据。
30.在一个实施例中,所述对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告之后,所述方法还包括:
31.将所述测试报告上传至预设报告平台。
32.一种单元测试装置,包括:
33.监听拉取模块,用于当监听到有项目代码提交时,拉取所述项目代码;
34.文件更新模块,用于在项目构建时对所述项目代码的pom文件进行更新,以在所述pom文件中添加覆盖率插件;
35.遍历创建模块,用于遍历所述项目代码的目录,在预设目录下创建测试类;
36.测试模块,用于对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告。
37.一种单元测试系统,所述系统包括至少一个处理器;以及,
38.与所述至少一个处理器通信连接的存储器;其中,
39.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述单元测试方法。
40.一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的单元测试方法。
41.有益效果:本发明公开了一种单元测试方法、装置、系统及存储介质,相比于现有技术,本发明实施例通过在监听到有代码提交时自动对pom文件进行覆盖率插件的更新以及测试类的遍历创建,确保不同配置的项目均能实现自动的单元测试并生成具有代码覆盖率的测试报告,无需人工手动配置维护,有效降低了单元测试的维护成本,提高单元测试的维护效率。
附图说明
42.下面将结合附图及实施例对本发明作进一步说明,附图中:
43.图1为本发明实施例提供的单元测试方法的一个流程图;
44.图2为本发明实施例提供的单元测试方法中步骤s100的一个流程图;
45.图3为本发明实施例提供的单元测试方法中步骤s200的一个流程图;
46.图4为本发明实施例提供的单元测试方法中步骤s203的一个流程图;
47.图5为本发明实施例提供的单元测试方法中步骤s300的一个流程图;
48.图6为本发明实施例提供的单元测试装置的功能模块示意图;
49.图7为本发明实施例提供的单元测试系统的硬件结构示意图。
具体实施方式
50.为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下结合附图对本发明实施例进行介绍。
51.请参阅图1,图1为本发明提供的单元测试方法一个实施例的流程图。如图1所示,该方法具体包括如下步骤:
52.s100、当监听到有项目代码提交时,拉取所述项目代码。
53.本实施例中,当开发人员将编辑好的代码提交至指定的仓库时,流水线监听到有项目代码提交,则自动触发代码拉取与项目构建,以实现对项目代码的自动编译,测试、打包构建等工作,实现持续地自动化项目构建与测试。
54.在一个实施例中,请参阅图2,其为本发明实施例提供的单元测试方法中步骤s100的流程图,如图2所示,步骤s100包括:
55.s101、监听git仓库中是否存在项目代码提交;
56.s102、若存在,则获取该项目代码的分支号并传递至持续集成工具;
57.s103、控制所述持续集成工具通过所述分支号拉取所述项目代码。
58.本实施例中,开发人员写好的项目代码将提交到git仓库中,git是一个开源的分布式版本控制工具可以实现软件的版本控制,在多个版本之间切换,可以实现多分支开发,提高开发效率。具体开发人员可在maven工程中编写项目代码,maven是一个项目管理工具,可以对java项目进行自动化的构建和依赖管理,maven采用配置文件的方式对项目的名称、版本号、项目依赖等等信息进行描述,使之结构清晰,便于团队的项目开发。
59.当流水线监听到有项目代码提交时,则自动触发项目构建流程,具体通过持续集成工具jenkins进行构建,将监听到的项目代码的分支号传递给持续集成工具jenkins,使其能通过该分支号准确拉取相应的项目代码进行项目构建。具体地,jenkins是基于java开发的一种持续集成工具,用于监控持续重复的工作,例如软件的持续构建和测试,使开发人员可以很容易的将改变集成到工程中,实现自动化的、持续的构建,有利于提高开发效率。
60.s200、在项目构建时对所述项目代码的pom文件进行更新,以在所述pom文件中添加覆盖率插件。
61.本实施例中,jenkins的工具配置可自定义执行脚本,jenkins将代码从git仓库上拉取下来后,则执行配置的自定义脚本,以对传统的项目构建阶段进行优化,首先执行自动更新pom文件的脚本,pom(project object model,项目对象模型)文件是maven工程的最核心的文件,pom文件的格式是xml文件,其包含了项目的很多信息,maven使用pom文件提供的
配置信息来构建项目,然而由于开发人员编写代码时无需关心测试事宜,因此不是所有项目的pom文件中均添加有覆盖率插件,这将导致部分未添加覆盖率插件的项目无法成功进行测试,本实施例在持续的项目构建过程中先对pom文件进行自动更新,确保其配置的完整性,能有效的减少维护成本,开发人员不再过多关注如何配置代码覆盖率插件,同时也减少了培训宣导的人力成本。
62.在一个实施例中,请参阅图3,其为本发明实施例提供的单元测试方法中步骤s200的流程图,如图3所示,步骤s200包括:
63.s201、确认所述项目代码是否为多模块项目;
64.s202、若为多项目模块,则分别获取父pom文件和子pom文件;否则直接获取pom文件;
65.s203、对获取到的pom文件添加覆盖率插件完成更新。
66.本实施例中,在对pom文件进行更新时,首先需要判断当前拉取的项目是否为maven的多模块项目,如果是多模块则分别获取父pom文件和子pom文件,后续则针对父pom文件和子pom文件分别添加不同配置的覆盖率插件;如果不是多模块项目,则直接获取pom文件以进行覆盖率插件的添加更新,针对不同情况下获取到的pom文件添加相应的覆盖率插件以完成文件更新,实现自动化的配置维护。
67.在一个实施例中,请参阅图4,其为本发明实施例提供的单元测试方法中步骤s203的流程图,如图4所示,步骤s203包括:
68.s2031、确认获取到的pom文件中是否已添加覆盖率插件;
69.s2032、若未添加,则直接添加预设覆盖率插件,若已添加,则确认已添加的覆盖率插件是否符合预设规范;
70.s2033、若不符合,则清除已添加的覆盖率插件并添加所述预设覆盖率插件。
71.本实施例中,在对获取到的pom文件进行覆盖率插件的添加更新时,先确认获取到的pom文件中是否以及配置好了覆盖率插件,若当前pom文件中未添加覆盖率插件,则直接添加符合预设规范的预设覆盖率插件,若当前pom文件中已添加覆盖率插件,则进一步检查已添加的覆盖率插件是否符合预设规范,若不符合则将现有的插件清除并重新添加预设覆盖率插件,若符合则不进行插件添加操作,避免重复添加的同时也确保了插件的兼容规范性,确保自动测试的可靠性。
72.s300、遍历所述项目代码的目录,在预设目录下创建测试类;
73.s400、对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告。
74.本实施例中,由于代码覆盖率的测试报告必须通过测试类生成,而新接入的项目,有些模块可能并没有写测试类,导致一些模块的代码覆盖率无法获取,从而也会产生有新增代码无感知的漏洞,因此本实施例在项目构建时还遍历项目代码的目录,在相应的位置即预设目录下创建测试类,自动添加测试类的方式,可以有效填补因测试类的缺失而产生增量代码未统计的漏洞,使其代码覆盖率更加准确。
75.在确保项目的覆盖率插件以及测试类均配置完成后,则执行mvn test命令以对项目代码执行单元测试,通过覆盖率插件测试得到代码覆盖率,并通过所述测试类生成测试报告,实现持续且完善的自动化测试,无需人工手动维护每个项目的配置,大大提高了配置
效率也降低了测试维护成本。
76.在一个实施例中,请参阅图5,其为本发明实施例提供的单元测试方法中步骤s300的流程图,如图5所示,步骤s300包括:
77.s301、遍历所述项目代码的目录,确认是否存在src目录;
78.s302、若存在src目录,则确认所述src目录下是否存在test目录,若不存在src目录,则结束创建;
79.s303、若存在test目录,则确认所述test目录下是否已存在测试类,当不存在时创建所述测试类;若不存在test目录,则创建test目录并创建所述测试类。
80.本实施例中,在添加测试类时,先遍历项目代码的目录,确认是否存在src目录,src目录时存在代码编写的包,即为项目内容的核心文件,若不存在src目录则直接结束创建,提前排除非项目内容的目录,节约数据处理量,若存在src目录,则进一步确认是否存在test目录,即按规范测试类需要创建在test目录下。
81.若不存在test目录,则需先创建test目录,然后再创建basetest.java文件即创建测试类,若已存在test目录,则进一步判断是否已存在测试类,若已存在则结束流程避免重复创建,若不存在则再test目录下创建测试类,实现完整且无重复的测试类创建。
82.在一个实施例中,步骤s400之后,方法还包括:
83.识别每个目录下是否存在测试报告;
84.将所有存在测试报告的目录进行拼接并解析,得到所述项目代码的测试数据。
85.本实施例中,测试完成后,还需要把所有测试报告的目录维护到原有的流程中,通过自动检查识别每个目录下是否存在测试报告,如果存在,则将存在测试报告的目录拼接并解析,即自动获取所有存在测试报告的目录进行解析,得到整个项目的测试数据。通过自动获取测试报告目录的方式可以大大提高配置效率,同时也降低了维护成本,比如模块的新增或减少,不再需要人工维护,有效降低了维护成本。
86.在一个实施例中,步骤s400之后,方法还包括:
87.将所述测试报告上传至预设报告平台。
88.本实施例中,在完成单一测试后则将完整的测试报告进行上传保存,以便灵活调取查看,实现完善且自动维护配置的单元测试流程。
89.本发明另一实施例提供一种单元测试装置,如图6所示,装置1包括:
90.监听拉取模块11,用于当监听到有项目代码提交时,拉取所述项目代码;
91.文件更新模块12,用于在项目构建时对所述项目代码的pom文件进行更新,以在所述pom文件中添加覆盖率插件;
92.遍历创建模块13,用于遍历所述项目代码的目录,在预设目录下创建测试类;
93.测试模块14,用于对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告。
94.监听拉取模块11、文件更新模块12、遍历创建模块13和测试模块14依次连接,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述单元测试的执行过程,各模块的具体实施方式请参考上述对应的方法实施例,此处不再赘述。
95.在一个实施例中,所述监听拉取模块11,包括:
96.监听单元,用于监听git仓库中是否存在项目代码提交;
97.传递单元,用于若存在,则获取该项目代码的分支号并传递至持续集成工具;
98.拉取单元,用于控制所述持续集成工具通过所述分支号拉取所述项目代码。
99.在一个实施例中,所述文件更新模块12,包括:
100.模块确认单元,用于确认所述项目代码是否为多模块项目;
101.文件获取单元,用于若为多项目模块,则分别获取父pom文件和子pom文件;否则直接获取pom文件;
102.添加更新单元,用于对获取到的pom文件添加覆盖率插件完成更新。
103.在一个实施例中,所述添加更新单元,包括:
104.确认子单元,用于确认获取到的pom文件中是否已添加覆盖率插件;
105.添加判断子单元,用于若未添加,则直接添加预设覆盖率插件,若已添加,则确认已添加的覆盖率插件是否符合预设规范;
106.清除添加子单元,用于若不符合,则清除已添加的覆盖率插件并添加所述预设覆盖率插件。
107.在一个实施例中,所述遍历创建模块13,包括:
108.遍历单元,用于遍历所述项目代码的目录,确认是否存在src目录;
109.目录确认单元,用于若存在src目录,则确认所述src目录下是否存在test目录,若不存在src目录,则结束创建;
110.创建单元,用于若存在test目录,则确认所述test目录下是否已存在测试类,当不存在时创建所述测试类;若不存在test目录,则创建test目录并创建所述测试类。
111.在一个实施例中,所述装置1,还包括:
112.识别模块,用于识别每个目录下是否存在测试报告;
113.拼接解析模块,用于将所有存在测试报告的目录进行拼接并解析,得到所述项目代码的测试数据。
114.在一个实施例中,所述装置1,还包括:
115.上传模块,用于将所述测试报告上传至预设报告平台。
116.本发明另一实施例提供一种单元测试系统,如图7所示,系统10包括:
117.一个或多个处理器110以及存储器120,图7中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图7中以通过总线连接为例。
118.处理器110用于完成系统10的各种控制逻辑,其可以为通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acorn risc machine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp和/或任何其它这种配置。
119.存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的单元测试方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行系统10的各种功能应用以及数据处理,即实现上述方法实施例中的单元测试方法。
120.存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系
统、至少一个功能所需要的应用程序;存储数据区可存储根据系统10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至系统10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
121.一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,实现以下步骤:
122.当监听到有项目代码提交时,拉取所述项目代码;
123.在项目构建时对所述项目代码的pom文件进行更新,以在所述pom文件中添加覆盖率插件;
124.遍历所述项目代码的目录,在预设目录下创建测试类;
125.对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告。
126.在一个实施例中,所述当监听到有项目代码提交时,拉取所述项目代码,包括:
127.监听git仓库中是否存在项目代码提交;
128.若存在,则获取该项目代码的分支号并传递至持续集成工具;
129.控制所述持续集成工具通过所述分支号拉取所述项目代码。
130.在一个实施例中,所述在项目构建时对所述项目代码的pom文件进行更新,以在所述pom文件中添加覆盖率插件,包括:
131.确认所述项目代码是否为多模块项目;
132.若为多项目模块,则分别获取父pom文件和子pom文件;否则直接获取pom文件;
133.对获取到的pom文件添加覆盖率插件完成更新。
134.在一个实施例中,所述对获取到的pom文件添加覆盖率插件完成更新,包括:
135.确认获取到的pom文件中是否已添加覆盖率插件;
136.若未添加,则直接添加预设覆盖率插件,若已添加,则确认已添加的覆盖率插件是否符合预设规范;
137.若不符合,则清除已添加的覆盖率插件并添加所述预设覆盖率插件。
138.在一个实施例中,所述遍历所述项目代码的目录,在预设目录下创建测试类,包括:
139.遍历所述项目代码的目录,确认是否存在src目录;
140.若存在src目录,则确认所述src目录下是否存在test目录,若不存在src目录,则结束创建;
141.若存在test目录,则确认所述test目录下是否已存在测试类,当不存在时创建所述测试类;若不存在test目录,则创建test目录并创建所述测试类。
142.在一个实施例中,所述对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告之后,所述方法还包括:
143.识别每个目录下是否存在测试报告;
144.将所有存在测试报告的目录进行拼接并解析,得到所述项目代码的测试数据。
145.在一个实施例中,所述对所述项目代码执行单元测试,通过所述覆盖率插件测试
得到代码覆盖率并通过所述测试类生成测试报告之后,所述方法还包括:
146.将所述测试报告上传至预设报告平台。
147.本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤s100至步骤s400。
148.作为示例,非易失性存储介质能够包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦rom(eeprom)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器(ram)。通过说明而非限制,ram可以以诸如同步ram(sram)、动态ram、(dram)、同步dram(sdram)、双数据速率sdram(ddrsdram)、增强型sdram(esdram)、synchlink dram(sldram)以及直接rambus(兰巴斯)ram(drram)之类的许多形式得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。
149.综上,本发明公开的一种单元测试方法、装置、系统及存储介质中,方法通过当监听到有项目代码提交时,拉取所述项目代码;在项目构建时对所述项目代码的pom文件进行更新,以在所述pom文件中添加覆盖率插件;遍历所述项目代码的目录,在预设目录下创建测试类;对所述项目代码执行单元测试,通过所述覆盖率插件测试得到代码覆盖率并通过所述测试类生成测试报告。通过在监听到有代码提交时自动对pom文件进行覆盖率插件的更新以及测试类的遍历创建,确保不同配置的项目均能实现自动的单元测试并生成具有代码覆盖率的测试报告,无需人工手动配置维护,有效降低了单元测试的维护成本,提高单元测试的维护效率。
150.当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的计算机程序可存储于一非易失性计算机可读取的存储介质中,该计算机程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、软盘、闪存、光存储器等。
151.应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1