一种生成自动化执行策略的方法、系统、设备及存储介质技术方案

技术编号:29525947 阅读:19 留言:0更新日期:2021-08-03 15:12
本发明专利技术公开了一种生成自动化执行策略的方法、系统、设备及存储介质,通过命令行处理程序解析传入的命令行参数,识别jar包文件并转换输出为List<URL>,同时初始化过滤级别和过滤规则;然后使用List<URL>初始化自定义类加载器,遍历List<URL>,解析获取其中的测试类名称,并使用初始化后的自定义类加载器加载到JVM中,存到Map<String,List<Class>>;遍历List<Class>,获取测试Class,解析其中拥有@Test注解的测试方法,存放在Map<String,List<String>>;解析数据,生成testng.xml文件。

【技术实现步骤摘要】
一种生成自动化执行策略的方法、系统、设备及存储介质
本专利技术涉及一种生成自动化执行策略的方法、系统、设备及存储介质,属于自动化执行策略生成领域。
技术介绍
测试项目中,选择TestNG作为自动化测试的执行框架。除全量执行外,还会经常遇到因业务测试需要而制定不同的自动化案例执行策略。案例量少的时候,手工配置testng.xml问题不大;但在自动化案例量逐渐增多情况下,且开始整体规划不好的情况下,手工配置就会消耗人力时间过长,降低测试效率,且因人为疏忽容易出错遗漏。
技术实现思路
本专利技术所要解决的技术问题是:提供一种生成自动化执行策略的方法、系统、设备及存储介质,利用Java编写自定义类加载器、Java反射技术和第三方工具包Jdom,开发一个命令行工具,通过该工具及相关选项,最终生成目标testng.xml。本专利技术为解决上述技术问题采用以下技术方案:一种生成自动化执行策略的方法,包括如下步骤:步骤1,通过命令行处理程序解析传入的命令行参数,识别jar包文件并转换输出为List<URL>,同时初始化过滤级别和过滤规则;步骤2,使用List<URL>初始化自定义类加载器,遍历List<URL>,解析获取其中的测试类名称,并使用初始化后的自定义类加载器加载到JVM中,最后存到Map<String,List<Class>>中,key为jar包名称,value为URL标识的jar包中解析出的测试类列表;步骤3,遍历List<Class>,获取测试Class,解析其中拥有@Test注解的测试方法,存放在Map<String,List<String>>,key为类名称,value为该类中的测试方法名列表;步骤4,使用步骤2生成的Map<String,List<Class>>和步骤3生成的Map<String,List<String>>,解析Map<String,List<Class>>和Map<String,List<String>>中的数据,生成testng.xml文件。作为本专利技术方法的一种优选方案,所述步骤2的具体过程如下:使用步骤1生成的List<URL>,初始化TestClassLoader对象,然后解析jar包文件,依次遍历其中的类文件,获取类名称并调用TestClassLoader对象load方法加载到JVM中,并根据步骤1设定的过滤级别和规则筛选出符合要求的类名,存放到List<Class>中,最后使用jar包名称和List<Class>初始化JarInfo,存放到List<JarInfo>。作为本专利技术方法的一种优选方案,所述步骤3的具体过程如下:使用步骤2生成的List<JarInfo>,依序遍历每个JarInfo对象,然后获取该对象下的List<Class>,遍历该列表,使用该列表中的项初始化ClassParser对象,通过java反射获取拥有@Test注解的测试方法名和该注解下description属性,同时验证是否满足设定的过滤级别和规则,利用满足要求的测试方法初始化TestMethod对象,然后逐个存放在List<TestMethod>;最后再获取类注解Story的value属性,和生成的List<TestMethod>一起用于初始化TestClassInfo对象,存放在List<TestClassInfo>中。作为本专利技术方法的一种优选方案,所述步骤4的具体过程如下:遍历步骤2生成的List<JarInfo>,List<JarInfo>中每个JarInfo对应生成testng.xml中的一个test元素,name属性即为包名;然后使用步骤3生成的List<TestClassInfo>,遍历解析,每个TestClassInfo对应testng.xml中的一个class元素,然后遍历List<TestMethod>,每个TestMethod对应testng.xml中的一个include元素;最终生成testng.xml文件。一种基于所述生成自动化执行策略的方法的系统,该系统包括Main模块、自定义类加载器、类解析器和目标文件生成器;所述Main模块用于通过命令行处理程序解析传入的命令行参数,识别jar包文件并转换输出为List<URL>,同时初始化过滤级别和过滤规则;自定义类加载器用于使用List<URL>初始化自定义类加载器,遍历List<URL>,解析获取其中的测试类名称,并使用初始化后的自定义类加载器加载到JVM中,最后存到Map<String,List<Class>>中,key为jar包名称,value为URL标识的jar包中解析出的测试类列表;类解析器用于遍历List<Class>,获取测试Class,解析其中拥有@Test注解的测试方法,存放在Map<String,List<String>>,key为类名称,value为该类中的测试方法名列表;目标文件生成器用于解析Map<String,List<Class>>和Map<String,List<String>>中的数据,生成testng.xml文件。一种计算机设备,包括存储器、处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述生成自动化执行策略的方法的步骤。一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述生成自动化执行策略的方法的步骤。本专利技术采用以上技术方案与现有技术相比,具有以下技术效果:本专利技术通过编写自定义类加载器加载jar包中的测试类,并利用反射解析出类中相关测试方法,按照规则生成testng.xml文件。主要解决了以下两个问题:一、随着自动化测试案例量逐渐增多,导致手工配置testng.xml耗时耗力,效率低的问题;二、解决因手动配置导致的遗漏或配置错误问题。附图说明图1是本专利技术一种生成自动化执行策略的方法的流程图。具体实施方式下面详细描述本专利技术的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本专利技术,而不能解释为对本专利技术的限制。本专利技术主要利用Java编写自定义类加载器、Java反射技术和第三方工具包Jdom,开发一个命令行工具,通过该工具及相关选项,最终生成目标testng.xml。系统架构或场景:本文档来自技高网...

【技术保护点】
1.一种生成自动化执行策略的方法,其特征在于,包括如下步骤:/n步骤1,通过命令行处理程序解析传入的命令行参数,识别jar包文件并转换输出为List<URL>,同时初始化过滤级别和过滤规则;/n步骤2,使用List<URL>初始化自定义类加载器,遍历List<URL>,解析获取其中的测试类名称,并使用初始化后的自定义类加载器加载到JVM中,最后存到Map<String,List<Class>>中,key为jar包名称,value为URL标识的jar包中解析出的测试类列表;/n步骤3,遍历List<Class>,获取测试Class,解析其中拥有@Test注解的测试方法,存放在Map<String,List<String>>,key为类名称,value为该类中的测试方法名列表;/n步骤4,使用步骤2生成的Map<String,List<Class>>和步骤3生成的Map<String,List<String>>,解析Map<String,List<Class>>和Map<String,List<String>>中的数据,生成testng.xml文件。/n...

【技术特征摘要】
1.一种生成自动化执行策略的方法,其特征在于,包括如下步骤:
步骤1,通过命令行处理程序解析传入的命令行参数,识别jar包文件并转换输出为List<URL>,同时初始化过滤级别和过滤规则;
步骤2,使用List<URL>初始化自定义类加载器,遍历List<URL>,解析获取其中的测试类名称,并使用初始化后的自定义类加载器加载到JVM中,最后存到Map<String,List<Class>>中,key为jar包名称,value为URL标识的jar包中解析出的测试类列表;
步骤3,遍历List<Class>,获取测试Class,解析其中拥有@Test注解的测试方法,存放在Map<String,List<String>>,key为类名称,value为该类中的测试方法名列表;
步骤4,使用步骤2生成的Map<String,List<Class>>和步骤3生成的Map<String,List<String>>,解析Map<String,List<Class>>和Map<String,List<String>>中的数据,生成testng.xml文件。


2.根据权利要求1所述生成自动化执行策略的方法,其特征在于,所述步骤2的具体过程如下:
使用步骤1生成的List<URL>,初始化TestClassLoader对象,然后解析jar包文件,依次遍历其中的类文件,获取类名称并调用TestClassLoader对象load方法加载到JVM中,并根据步骤1设定的过滤级别和规则筛选出符合要求的类名,存放到List<Class>中,最后使用jar包名称和List<Class>初始化JarInfo,存放到List<JarInfo>。


3.根据权利要求2所述生成自动化执行策略的方法,其特征在于,所述步骤3的具体过程如下:
使用步骤2生成的List<JarInfo>,依序遍历每个JarInfo对象,然后获取该对象下的List<Class>,遍历该列表,使用该列表中的项初始化ClassParser对象,通过java反射获取拥有@Test注解的测试方法名和该注解下description属性,同时验证是否满足设定的过滤级别和规则,利用满足要求的测试方法初始化TestMethod对象,然后逐个存放在List<TestMethod>;最后再获取类注解Story的value属性,和生成的L...

【专利技术属性】
技术研发人员:王书同
申请(专利权)人:的卢技术有限公司
类型:发明
国别省市:江苏;32

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

1