单元测试代码生成方法、装置、设备及存储介质与流程

文档序号:35714234发布日期:2023-10-12 19:43阅读:9465来源:国知局
单元测试代码生成方法、装置、设备及存储介质与流程

本技术涉及大数据领域,尤其涉及一种单元测试代码生成方法、装置、设备及存储介质。


背景技术:

1、单元测试是一种软件测试方法,能帮助开发人员尽早地发现软件漏洞(bug),是保证软件质量的一个重要环节。目前交易银行系统采用分层架构,其中数据访问层体量较大,涉及几百张甚至更多张数据表的增删改查操作,且由于业务原因,众多数据表含有近百或更多个字段。若以手工编码方式来实现数据访问层的单元测试,开发周期长,开发过程繁琐且重复。

2、相关技术中,自动生成单元测试代码的工具能够生成简单的单元测试代码,但面对交易银行系统中的数据访问层,开发人员还需对单元测试代码进行进一步的修改,导致单元测试代码的开发效率较低,单元测试效果较差。


技术实现思路

1、本技术提供一种单元测试代码生成方法、装置、设备及存储介质,用以提升单元测试代码的开发效率,提供可信的单元测试。

2、第一方面,本技术提供一种单元测试代码生成方法,包括:

3、获取面向目标单元测试对象的单元测试代码生成请求,单元测试代码生成请求中携带有目标单元测试对象的对象标识、入参信息和出参信息,入参信息包含目标入参和目标入参对应的测试数据,出参信息包含目标出参和目标出参对应的测试数据,目标单元测试对象包括待测试源代码中的类和/或方法,待测试源代码涉及数据库操作;

4、基于出入参与数据库中字段的映射关系,获取数据库中与入参信息和出参信息相关的数据表中的目标字段和目标字段对应的数据的数据结构信息;

5、将目标字段和数据结构信息注入至单元测试模板中,生成结构化查询语言(structured query language,简称sql)映射文件,sql映射文件包含数据库操作语句,并将入参信息和出参信息写入json文本中,json文本用于存储和表示数据;

6、按照java编码规范对json文本及单元测试模板进行编码,生成目标单元测试对象的单元测试工程,单元测试工程包含单元测试代码和xml文件,xml文件包含sql映射文件中的信息和相关组件的配置注入信息。

7、在一种可能的实施方式中,上述获取面向目标单元测试对象的单元测试代码生成请求,包括:

8、接收作用于单元测试代码生成界面上第一控件的第一交互操作,第一控件用于触发单元测试代码的生成;

9、响应第一交互操作,获取面向目标单元测试对象的单元测试代码生成请求。

10、在一种可能的实施方式中,上述单元测试代码生成界面中还展示可供选择的入参和可供选择的出参,其中,单元测试代码生成界面还包含第一区域和第二区域,可供选择的入参在第一区域显示,可供选择的出参在第二区域显示,在接收第一交互操作之前还包括:

11、响应于针对可供选择的入参的第一选择操作,确定目标入参为第一选择操作对应的入参,并在第一区域区别显示目标入参;

12、响应于针对可供选择的出参的第二选择操作,确定目标出参为第二选择操作对应的出参,并在第二区域区别显示目标出参。

13、在一种可能的实施方式中,上述第一区域还显示可供选择的入参对应的第一测试数据,第二区域还显示可供选择的出参对应的第二测试数据,第一测试数据和第二测试数据均可编辑。

14、在一种可能的实施方式中,单元测试代码生成方法还包括:

15、响应针对第一测试数据的第一编辑操作,确定目标入参对应的测试数据包含第一编辑操作编辑的测试数据,第一编辑操作用于调整第一测试数据的字段名称、数据大小、数据长度和数据类型中的至少一项;

16、和/或,响应针对第二测试数据的第二编辑操作,确定目标出参对应的测试数据包含第二编辑操作编辑的测试数据,第二编辑操作用于调整第二测试数据的字段名称、数据大小、数据长度和数据类型中的至少一项。

17、在一种可能的实施方式中,上述可供选择的入参的命名,和,可供选择的出参的命名,均遵循数据字典;且,第一测试数据和第二测试数据均是基于数据字典为不同类型的参数生成的测试数据。

18、在一种可能的实施方式中,上述单元测试代码生成界面中还展示候选单元测试对象,其中,单元测试代码生成界面还包含第三区域,候选单元测试对象在第三区域显示,在确定目标入参和目标出参之前,还包括:

19、响应针对候选单元测试对象的第三选择操作,确定目标单元测试对象为第三选择操作选择的单元测试对象,并在第三区域区别显示目标单元测试对象。

20、在一种可能的实施方式中,单元测试代码生成方法还包括:

21、候选单元测试对象是响应获取到待测试源代码,识别得到的待测试源代码中包含的单元测试对象;

22、和/或,候选单元测试对象显示在单元测试代码生成界面中,或者,候选单元测试对象包含在清单文件中。

23、在一种可能的实施方式中,上述单元测试代码生成界面中还包括第二控件,第二控件用于获取待测试源代码。

24、第二方面,本技术提供一种单元测试代码生成装置,包括:

25、获取模块,用于获取面向目标单元测试对象的单元测试代码生成请求,单元测试代码生成请求中携带有目标单元测试对象的对象标识、入参信息和出参信息,入参信息包含目标入参和目标入参对应的测试数据,出参信息包含目标出参和目标出参对应的测试数据,目标单元测试对象包括待测试源代码中的类和/或方法,待测试源代码涉及数据库操作;

26、基于出入参与数据库中字段的映射关系,获取数据库中与入参信息和出参信息相关的数据表中的目标字段和目标字段对应的数据的数据结构信息;

27、处理模块,用于将目标字段和数据结构信息注入至单元测试模板中,生成sql映射文件,sql映射文件包含数据库操作语句,并将入参信息和出参信息写入json文本中,json文本用于存储和交换数据;

28、编码模块,用于按照java编码规范对json文本及单元测试模板进行编码,生成目标单元测试对象的单元测试工程,单元测试工程包含单元测试代码和xml文件,xml文件包含sql映射文件中的信息和相关组件的配置注入信息。

29、在一种可能的实施方式中,获取模块可以具体用于:接收作用于单元测试代码生成界面上第一控件的第一交互操作,第一控件用于触发单元测试代码的生成;响应第一交互操作,获取面向目标单元测试对象的单元测试代码生成请求。

30、在一种可能的实施方式中,上述单元测试代码生成界面中还展示可供选择的入参和可供选择的出参,其中,单元测试代码生成界面还包含第一区域和第二区域,可供选择的入参在第一区域显示,可供选择的出参在第二区域显示。获取模块还用于:响应于针对可供选择的入参的第一选择操作,确定目标入参为第一选择操作对应的入参,并在第一区域区别显示目标入参;响应于针对可供选择的出参的第二选择操作,确定目标出参为第二选择操作对应的出参,并在第二区域区别显示目标出参。

31、在一种可能的实施方式中,上述第一区域还显示可供选择的入参对应的第一测试数据,第二区域还显示可供选择的出参对应的第二测试数据,第一测试数据和第二测试数据均可编辑。

32、在一种可能的实施方式中,获取模块还可以用于:响应针对第一测试数据的第一编辑操作,确定目标入参对应的测试数据包含第一编辑操作编辑的测试数据,第一编辑操作用于调整第一测试数据的字段名称、数据大小、数据长度和数据类型中的至少一项;和/或,响应针对第二测试数据的第二编辑操作,确定目标出参对应的测试数据包含第二编辑操作编辑的测试数据,第二编辑操作用于调整第二测试数据的字段名称、数据大小、数据长度和数据类型中的至少一项。

33、在一种可能的实施方式中,上述可供选择的入参的命名,和,可供选择的出参的命名,均遵循数据字典;且,第一测试数据和第二测试数据均是基于数据字典为不同类型的参数生成的测试数据。

34、在一种可能的实施方式中,上述单元测试代码生成界面中还展示候选单元测试对象,其中,单元测试代码生成界面还包含第三区域,候选单元测试对象在第三区域显示。对应地,获取模块还可以用于:在确定目标入参和目标出参之前,响应针对候选单元测试对象的第三选择操作,确定目标单元测试对象为第三选择操作选择的单元测试对象,并在第三区域区别显示目标单元测试对象。

35、在一种可能的实施方式中,候选单元测试对象是响应获取到待测试源代码,识别得到的待测试源代码中包含的单元测试对象。

36、在一种可能的实施方式中,候选单元测试对象显示在单元测试代码生成界面中,或者,候选单元测试对象包含在清单文件中。

37、在一种可能的实施方式中,上述单元测试代码生成界面中还包括第二控件,第二控件用于获取待测试源代码。

38、第三方面,本技术提供一种电子设备,包括:处理器,以及与处理器通信连接的存储器;

39、存储器存储计算机执行指令;

40、处理器执行存储器存储的计算机执行指令,使得处理器执行第一方面任一项所述的单元测试代码生成方法。

41、第四方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如第一方面任一项所述的单元测试代码生成方法。

42、第五方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被执行时实现如第一方面任一项所述的单元测试代码生成方法。

43、本技术提供的一种单元测试代码生成方法、装置、设备及存储介质,获取面向目标单元测试对象的单元测试代码生成请求,基于出入参与数据库中字段的映射关系,通过连接数据库来获取数据库中与入参信息和出参信息相关的数据表中的目标字段和目标字段对应的数据的数据结构信息,便于对数据库进行相关的测试操作。另外,通过将目标字段和数据结构信息注入至单元测试模板中,可自动生成sql映射文件,sql映射文件包含数据库操作语句,并将入参信息和出参信息写入json文本中。最后,通过按照java编码规范对json文本及单元测试模板进行编码,生成目标单元测试对象的单元测试工程,无需进行额外的手工编码,提升了单元测试代码开发效率、单元测试效果较好。

当前第1页1 2 
网友询问留言 已有1条留言
  • 173491... 来自[中国] 2023年10月13日 10:38
    666
    0
1