微服务单元测试组件
背景
微服务的调试,哪怕是简单问题,需要启动9个服务,ui/nginx 网关 应用 auth 基础数据服务 redis nacos 平台服务 ,效率差得不行,准备开发一个支持微服务环境的单元测试组件,
组件解决3个问题:
1 feign依赖,使用mock
2 权限和用户信息
3 切面,测试目标可带注解,方法前后执行切面
下面以代码解释测试组件的实现
测试容器
测试容器负责必要组件的构建和初始,主要是mock,容器标注@Compoenent,受spring管理,可以定义注解方法,支持测试目标的切面
上图,测试容器定义平台测试需要的注解,testee定义为Function,即测试代码是Function实现
测试示例
本节解释测试编写
上图是测试类的定义,
@EnableAspectJAutoProxy 示例需要切面,可以根据需要引入
GRPPlatformTestContainer 上一节介绍的测试容器,后面介绍使用
RemoteUpmsService 基础服务,需要mock的feign
CommonBizImpl 测试目标服务和组件
测试初始和释放
上图是测试的初始和释放,主要是mocking feign,即上面RemoteUpmsService方法返回的预设,测试中用到用户信息的预设
下图是测试中基础服务用到的两个方法的预设
上面方法返回null即可,比较简单,实际可能需要知道需要一些返回
上图是测试中的当前用户,使用spring security,在上下文设置预定的用户即可
上图是测试方法,分3部分,参数准备,测试,实现为function,执行和预期对比