探索xxl-job + apollo工具在自动化测试框架的应用——使用xxl-job运行TestNG测试方法

本文介绍了如何在自动化测试框架中结合xxl-job运行TestNG测试方法。首先从xxl-job官方示例入手,讲解了配置文件、编写定时任务和启动服务的过程。接着,探讨了Spring Boot框架与TestNG的融合,通过无配置文件调用TestNG的方法,并展示了如何在xxl-job的执行器中融入TestNG测试,实现了通过xxl-job调度自动化测试的方法。最后指出,虽然看似复杂,但实际上只需要了解基本的注解和配置即可实现,为后续使用apollo等工具打下了基础。
摘要由CSDN通过智能技术生成

使用xxl-job运行TestNG测试方法

0.引言

对于Spring Boot框架想必大家在开发人员的口中经常听到,在各种微信公众号号上想必也能经常看见,但在自动化框架中,我想大多数测试人员应该用不上。包括我在内,我一直认为自动化测试框架使用TestNG就足够了,不需要再额外增加一个新的框架来增加脚本的开发难度。但由于我们要使用xxl-job与apollo,导致我们必须使用Spring boot框架进行配置,这就使得我在使用TestNG编写自动化测试脚本时,必须将测试框架整合到Spring boot框架中,否则无法使用xxl-job与apollo的功能。

我想,很多人都会觉得:“我完全不知道Spring Boot框架是什么,单单学会使用单元测试框架就已经很费事了,如今还要再加上个更深的开发框架,可能我是无法使用xxl-job与apollo了”。有这样的想法很正常,我也是这样,虽然我引入了Spring Boot框架,但对于该框架,可以说我是一点都不了解,只是偶尔看过一星半点的介绍,但这并不妨碍我的使用,俗话说得好:“只要思想不滑坡,办法总比困难多”。而且对于框架,我们也只是因为xxl-job与apollo工具是依赖于该框架而已,所以我们只需要知道几个简单注解和复制粘贴相同的代码即可,至于原理什么的,我们都无需深入了解,所以我们不必担心不会使用。下面我就和大家分享下我实践的经验。

1.由xxl-job的官方例子入手

要想使用xxl-job来调用TestNG,就必须要明白怎么运行Spring Boot框架。因为xxl-job是通过Spring Boot框架来完成运行的,所以首先我们需要简单了解Spring Boot 框架的运作,只有了解了其中的运行方式,才能将框架融合到现有的测试框架中。下面我将通过xxl-job官方给出的一个例子进行说明。

我们拉取了xxl-job的代码后,其项目中,存在这样的一个路径

xxl-job\xxl-job-executor-samples\xxl-job-executor-sample-springboot

该项目便是官方给出的一个使用Spring Boot框架用xxl-job的例子。我们将该演示项目导入到IDE中,展开项目后,我们可以看到如下图的结构:

演示案例项目结构

简单介绍一下:

  • XxlJobExecutorApplication是服务的启动类,里面有一个main方法,当我们要启动Spring Boot服务时,直接运行该类即可,无需对该类进行改动
  • XxlJobConfig是xxl-job的启动配置类,里面包含xxl-job调用当前服务的配置(应该是这么解释吧···),无需对该类进行改动,但需要注意,高版本(2.3.0)与低版本(2.1.2)中存在以下方法不兼容的情况,在使用时,需要注意修改(一般不需要改动,按照自己xxl-job版本来写即可)

方法差异

  • IndexController全是注释的代码,不用管,也不需要修改
  • SampleXxlJob是用来编写xxl-job调用的定时任务入口方法的类,当然你也可以不用这个类名,只要包含@XxlJob这个注解即可,该类需要根据调用需求进行修改
  • application.properties配置文件,其中包含了引入xxl-job的基本参数,需要根据调用需求进行更改
  • logback.xml日志配置文件,暂时不用修改

以上是对于演示案例项目的结构的简单说明,下面我将从配置文件开始,讲讲我对框架的理解,直到能在xxl-job中正常调用到我们编写的方法为止。

1.1 配置文件

打开application.properties文件,我们可以看到有一堆的参数,别担心,上面几个参数是我们要修改的。

  • server.port:Spring Boot框架的启动端口,理论上,只要端口不冲突(没有其他的服务占用端口等)就不用修改,或者改一个符合端口号的随机数字(不建议这么玩),这样一般情况下是不会冲突的

端口冲突报错

  • logging.config:日志配置文件的存放地址,如果你是与application.properties文件放在同一路径下,那便无需更改
  • xxl.job.admin.addresses:xxl-job的启动路径,如果你的xxl-job在本地,并且没有改过xxl-job服务的启动端口,那也无需更改(由于我本地还启动了apollo,所以我更改过xxl-job的启动端口,我在《环境搭建》一文中有提及到)
  • xxl.job.executor.appname:执行器名称,该参数是在xxl-job后台系统中,添加的执行器名称,这里需要与后台配置的名称一致(好像不一致也能调用成功),执行器命名为demo,这里边需要相应改为demo
### xxl-job executor appname
xxl.job.executor.appname=demo

image

  • xxl.job.executor.port:xxl-job执行器调用端口,该端口是xxl-job与服务的连接通道,需要与服务的启动端口进行区分。在添加执行器时,使用的是该端口号
xxl.job.executor.port=9999

image

  • xxl.job.executor.logpath:执行日志生成路径,如果只是用来简单调用,也可不必更改

以上便是可能需要更改的配置,对于其他的配置,几乎无需更改。不难看出,xxl-job官方对我们这样的小白还是挺友好的,配置文件的内容都帮我们配置地很清晰,如果只是为了成功使用xxl-job调用到我们启动的服务,那配置文件压根就不用修改。

1.2 编写定时任务

在章节开头,我提到了“SampleXxlJob”类是存放定时任务执行方法的类,打开该类,我们可以看到,xxl-job官方为我们编写了很多的例子,我们只要拿第一个例子进行分析即可:

@Component
public class SampleXxlJob {
   
    /**
     * 1、简单任务示例(Bean模式)
     */
    @XxlJob("demoJobHandler")
    public void demoJobHandler() throws Exception {
   
        XxlJobHelper.log("XXL-JOB, Hello World.");
    
        for (int i = 0; i < 5; i++) {
   
            XxlJobHelper.log("beat at:" + i);
            TimeUnit.SECONDS.sleep(2);
        }
        // default success
    }
}

根据上例子,我们可以知道,要想让xxl-job执行时调用到相应的方法,首先类名前必须加上@Component注解,该注解是Spring Boot框架中的一个注解,你无需知道有什么用;其次,在任务方法上,加上@XxlJob注解,注解需要指定一个值,该值便是在配置定时任务时写入的JobHandler内容,该值必须与配置的值一致,否则将无法被调用到。例如,在案例中,我们在代码写入的值为“demoJobHandler”,那么,我们在后台配置的定时任务上,其JobHandler也必须是“demoJobHandler”:

在这里插入图片描述

当然,类名与方法名可随意命名,因为定时任务的调用与类、方法名称无关,只与相应的注解有关,注解配置正确,那运行便没有问题。不过有一点需要注意,在代码中

XxlJobHelper.log("XXL-JOB, Hello World.");

是高版本中配置日志的方法,低版本中只能使用Logger类进行配置。对于日志,其实我并不是很了解,有兴趣的朋友可以自行搜索学习,这里便不进行说明。

1.3 启动服务

同样在章节开头,我提到了“XxlJobExecutorApplication”类是服务的启动类,我们可以看到,在该类中,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值