基于SpringBoot的集成化单元测试方法及系统技术方案

技术编号:33286068 阅读:15 留言:0更新日期:2022-04-30 23:53
本发明专利技术公开一种基于SpringBoot的集成化单元测试方法及系统,通过定制开源组件的自动加载,生成可配置化的模拟组件实例;同时提供组件模拟模块化,通过开关的方式,实现各个开源组件的独立模拟开关;然后基于定制化加载生成的模拟组件,利用SPI机制和文件配置,实现模拟数据的文件配置化。本发明专利技术通过定制化开源组件加载,数据模拟文件配置化,解决了生产应用的外部接口和环境依赖问题,提高了单元测试数据模拟效率。通过规范化单元测试编写结构,使得单元测试更加工程结构化,更加清晰易于管理,利于推广使用。利于推广使用。利于推广使用。

【技术实现步骤摘要】
基于SpringBoot的集成化单元测试方法及系统


[0001]本专利技术属于互联网
,具体涉及一种基于SpringBoot的集成化单元测试方法及系统。

技术介绍

[0002]单元测试在各个领域都有其重要的意义。尤其是在微服务架构的背景下,业务代码被分散各个微服务中。多个终端系统越来越多的复用微服务。这对微服务系统的正确性和稳定性提了更高的要求。现有的单元测试存在以下问题:
[0003](1)依赖外部接口或者环境。在微服务的场景下,生产工程依赖各种各样的外部因素。如外部微服务,缓存,数据库等等。
[0004](2)模拟数据繁琐,工作量大。目前已有的开源模拟组件无法完美适配生产工程,对于生产有一定侵入性;模拟数据方式需要编写大量模拟代码,效率较低。
[0005](3)无工程级别最佳实践。目前没有对于单元测试的最佳实践,导致在开展单元测试工作时,没有统一共识,单元测试结构混乱。

技术实现思路

[0006]本专利技术解决的技术问题:提供一种易于管理、提高单元测试数据模拟效率的基于SpringBoot的集成化单元测试方法及系统。
[0007]技术方案:为了解决上述技术问题,本专利技术采用的技术方案如下:
[0008]一种基于SpringBoot的集成化单元测试方法,通过定制开源组件的自动加载,生成可配置化的模拟组件实例;同时提供组件模拟模块化,通过开关的方式,实现各个开源组件的独立模拟开关;然后基于定制化加载生成的模拟组件,利用SPI机制和文件配置,实现模拟数据的文件配置化;并将总体单元测试分为本地环境与集成环境,其中本地环境用于运行模拟数据,同时本地单元测试的数据用例按照用例场景进行分类管理。
[0009]进一步地,通过DUBBO自动加载和MYBATIS自动加载,实现无侵入式地生成mock代理实例。
[0010]进一步地,利用SPI和JSON文件的方式集成mockito框架,实现简化配置模拟数据过程。
[0011]进一步地,结合Spring的@Configuration注解,通过自定义加载器开关的方式,实现便捷的模拟开关配置。
[0012]进一步地,单元测试用例分为集成用例和本地用例两大类,集成用例用于开发本地联调,本地用例用于执行模拟数据,校验本地代码正确性和检查覆盖率。
[0013]进一步地,模拟数据与测试用例分开管理,各用例的模拟数据按照单元测试类名和单元测试方法名的路径存放管理。
[0014]一种基于SpringBoot的集成化单元测试系统,包括单元集成测试框架,单元集成测试框架内设置单元测试上下文模块、DUBBO模拟模块、MYBATIS模拟模块、以及其余模拟模
块,采用该系统测试时,单元测试用例和模拟数据用例输入至该单元集成测试框架内进行测试,然后输出验证结果。
[0015]进一步地,所述单元测试上下文模块,主要包含Spring上下文和模拟案例上下文,在单元测试用例执行时,实现自动加载Spring上下文,在执行单元测试方法时,实现自动装入执行案例信息。
[0016]进一步地,所述DUBBO模拟模块,实现重写原生Dubbo组件的自动装载功能,又实现Dubbo模拟代理生成功能。
[0017]有益效果:与现有技术相比,本专利技术具有以下优点:
[0018](1)本专利技术通过定制化开源组件加载,数据模拟文件配置化,解决了生产应用的外部接口和环境依赖问题,提高了单元测试数据模拟效率。
[0019](2)通过规范化单元测试编写结构,使得单元测试更加工程结构化,更加清晰易于管理。
[0020](3)目前市面上没有一种比较成熟的应用工程级别的单元测试集成落地方案,本专利技术已成功推行于实际生产应用。
附图说明
[0021]图1是基于SpringBoot的集成化单元测试方法结构示意图;
[0022]图2是经过一段时间的生产代码单元测试覆盖率情况。
具体实施方式
[0023]下面结合具体实施例,进一步阐明本专利技术,实施例在以本专利技术技术方案为前提下进行实施,应理解这些实施例仅用于说明本专利技术而不用于限制本专利技术的范围。
[0024]如图1所示,本专利技术的基于SpringBoot的集成化单元测试系统,包括单元集成测试框架,单元集成测试框架内设置单元测试上下文模块、DUBBO模拟模块、MYBATIS模拟模块、其余模拟模块。采用该系统测试时,单元测试用例和模拟数据用例输入至单元集成测试框架内进行测试,然后输出验证结果。
[0025]其中,单元测试上下文模块,主要包含Spring上下文和模拟案例上下文。在单元测试用例执行时,实现自动加载Spring上下文,在执行单元测试方法时,实现自动装入执行案例信息。DUBBO模拟模块,实现重写原生Dubbo组件的自动装载功能,又实现Dubbo模拟代理生成功能。其余模拟模块为待扩展模块,兼容后续中间件的加载。
[0026]基于SpringBoot的集成化单元测试系统,通过定制化上下文加载逻辑,扩展Spring单测上下文环境。基于扩展之后的上下文环境,定制开发上述组件的自动加载流程,生成代理实例。从而形成一个整体框架提供给实际单元测试编写人员使用,简化使用人员的开发工作。
[0027]本专利技术还公开一种基于SpringBoot的集成化单元测试方法,包括
[0028](1)通过定制开源组件的自动加载,生成可配置化的模拟组件实例。同时提供组件模拟模块化,通过开关的方式,实现各个开源组件的独立模拟开关:具体内容为:
[0029]通过DUBBO自动加载和MYBATIS自动加载,实现无侵入式地生成mock代理实例:通过继承SpringBootContextLoader定制单元测试上下文加载。增加了一新特性:通过识别@
ExcludeInitializer自定义注解,可以排除指定ApplicationContextInitializer。通过引入声明@EnableMockDubbo自定义注解,替换原有的@EnableDubbo注解,实现模拟Dubbo组件的开启。@EnableMockDubbo开关引入了开源组件Dubbo的@Reference和@Service注解处理器,定制化原生开源组件的Spring加载逻辑,重写实例生成实现。其中@Reference的实例生成替换为生成mockito代理实例,@Service的实例替换为普通Spring Bean实例。@EnableMockMybatis与@EnableMockDubbo类似,通过替换@MapperScan来开启模拟Mybatis组件的功能。@EnableMockMybatis通过引入自定义加载器,重写了Mybatis的MapperScannerRegistrar,将原有生成Mybatis代理改为成mockito代理实例。结合Spring的@Configuration注解,通过自定义加载器开关的方式,实现便捷的模拟开关配置。
[0030]本专利技术按照定制化解决的中间件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于SpringBoot的集成化单元测试方法,其特征在于,包括:通过定制开源组件的自动加载,生成可配置化的模拟组件实例;同时提供组件模拟模块化,通过开关的方式,实现各个开源组件的独立模拟开关;然后基于定制化加载生成的模拟组件,利用SPI机制和文件配置,实现模拟数据的文件配置化;并将总体单元测试分为本地环境与集成环境,其中本地环境用于运行模拟数据,同时本地单元测试的数据用例按照用例场景进行分类管理。2.根据权利要求1所述的基于SpringBoot的集成化单元测试方法,其特征在于:通过DUBBO自动加载和MYBATIS自动加载,实现无侵入式地生成mock代理实例。3.根据权利要求1所述的基于SpringBoot的集成化单元测试方法,其特征在于:利用SPI和JSON文件的方式集成mockito框架,实现简化配置模拟数据过程。4.根据权利要求1所述的基于SpringBoot的集成化单元测试方法,其特征在于:结合Spring的@Configuration注解,通过自定义加载器开关的方式,实现便捷的模拟开关配置。5.根据权利要求1所述的基于SpringBoot的集成化单元测试方法,其特征在于:单元测试用例分为...

【专利技术属性】
技术研发人员:陈杰
申请(专利权)人:江苏康众汽配有限公司
类型:发明
国别省市:

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

1