首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于Junit5自动切换不同数据库类型的单元测试方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:摩尔元数(福建)科技有限公司

摘要:本发明涉及一种基于Junit5自动切换不同数据库类型的单元测试方法,包括以下步骤:预设一个BaseJunitDaoFactory抽象类,该抽象类被JunitJupiterApi模块中@ExtendWith注解标记;将工程源码和测试源码进行编译,输出到target目录,通过java命令运行org.Junit.platform.runner.JunitPlatformRunner,启动Junit5运行器;Junit5运行器加载JunitJupiter模块,读取单元测试类是否存在@ExtendWith注解,若存在则进行后续步骤,若不存在则按照Junit5平台框架默认逻辑执行;JunitJupiter读取JunitJupiteApi模块的@ExtendWith注解,并执行代理对象的测试方法;通过方法拦截器拦截代理对象的测试方法,在拦截器中,取出所有的数据库类型,通过反射调用执行测试,每次执行的时候的数据库类型都不一样,直到完成测试。本发明实现在单元测试时数据库类型自动切换,有效提高测试效率。

主权项:1.一种基于Junit5自动切换不同数据库类型的单元测试方法,其特征在于,包括以下步骤:预设一个BaseJunitDaoFactory抽象类,该抽象类被JunitJupiterApi模块中@ExtendWith注解标记,在写单元测试类的时候,需要继承该抽象类;将工程源码和测试源码进行编译,输出到target目录,通过java命令运行org.Junit.platform.runner.JunitPlatformRunner,启动Junit5运行器;Junit5运行器加载JunitJupiter模块,读取单元测试类是否存在@ExtendWith注解,若存在则进行后续步骤,若不存在则按照Junit5平台框架默认逻辑执行;JunitJupiter读取JunitJupiteApi模块的@ExtendWith注解,并执行测试实例的代理对象的测试方法;通过方法拦截器拦截代理对象的测试方法,在拦截器中,取出所有的数据库类型,通过反射调用执行测试,每次执行的时候的数据库类型都不一样,直到完成测试;将通用的逻辑抽象到BaseJunitDaoFactory抽象类中;所述通用的逻辑包括数据库连接池的初始化,Dao接口的实例化和依赖注入;所述BaseJunitDaoFactory抽象类上标记了@ExtendWith注解,开发者写的单元测试类只要继承该类也会被默认标记,注解指定的扩展类为McTestInstanceFactory,该类实现了TestInstanceFactory接口和AfterCallback接口,这两个接口在JunitJupiterApi模块中,是Junit5提供的扩展点,读取到这个类后,Junit框架会通过java的反射机制取实例化McTestInstanceFactory对象,通过多态的机制去执行扩展点;所述TestInstanceFactory接口的方法,具体如下:createTestInstance,返回值是单元测试类实例化后的对象;通过McTestInstanceFactory实现了createTestInstanc,实现了对单元测试类的实例化逻辑;在实例化时,会优先执行父类的实例代码块,也就是会执行BaseJunitDaoFactory的实例代码块,在代码块中会开始初始化连接池和对应的数据库类型;开发者在写单元测试类的时候,不需要自己去实例化Dao,而是去调用相应的方法去得到该对象,BaseJunitDaoFactory会提供getDynamicDao方法去获取Dao对象;Junit5拿到该代理对象后,Junit5会通过指令去运行指定的单元测试类方法,但是也只执行一次该方法;所述JunitJupiter读取JunitJupiteApi模块的@ExtendWith注解,具体为:(1)当JunitJupiter在执行测试类时,会首先扫描测试类中的注解;(2)如果测试类中存在@ExtendWith注解,JunitJupiter会记录这个注解,并继续扫描其他的注解;(3)在扫描完所有注解后,JunitJupiter会根据@ExtendWith注解中指定的扩展类列表,创建并初始化这些扩展类的实例;(4)接下来,JunitJupiter会将创建的扩展实例传递给相应的扩展类,以便扩展实例能够执行自定义的行为;(5)当测试方法执行时,JunitJupiter会根据需要调用相应的扩展实例,以执行自定义的行为。

全文数据:

权利要求:

百度查询: 摩尔元数(福建)科技有限公司 一种基于Junit5自动切换不同数据库类型的单元测试方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。