文档章节

如何测试quartz定时任务逻辑

qquunn
 qquunn
发布于 2017/04/23 15:55
字数 384
阅读 892
收藏 38

系统一般会有一些后台定时任务,假设我们使用quartz实现定时任务,那么有两个测试功能点:

  1. 定时任务逻辑是否正确
  2. 定时器cron表达式编写是否正确,触发时间点是否正确

定时任务逻辑测试

如果定时任务在晚上11点执行,我们不可能要求测试人员等到晚上11点时,再去检查任务执行逻辑逻辑是否正确。我们可以提供一个定时器任务管理界面,让测试人员能够手动触发任务马上执行一次。具体实现可以参见:https://www.dexcoder.com/selfly/article/311

定时器cron表达式测试

如果cron表达式比较复杂,或不太确定表达式是否编写正确,可以打印cron表达式,后续几次触发任务执行的时间点,就可以方便检验cron表达式编写是否正确。

打印cron表达式,后续几次触发任务执行时间点,代码示例:

package org.quartz.demo;

import org.quartz.impl.triggers.CronTriggerImpl;

import java.text.SimpleDateFormat;
import java.util.Date;

public class CronTriggerImplDemo {

    public static void main(String[] args) throws Exception {

        CronTriggerImpl trigger = new CronTriggerImpl();
        trigger.setCronExpression("0 */1 * * * ?");

        trigger.triggered(null);

        Date fireTime = trigger.getNextFireTime();
        for (int i = 0; i < 3; i++) {
            if (fireTime != null) {
                System.out.println("下次执行时间点=" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(fireTime));
                fireTime = trigger.getFireTimeAfter(fireTime);
            } else {
                break;
            }
        }

    }

}

输出示例:

下次执行时间点=2017-04-23 15:52:00
下次执行时间点=2017-04-23 15:53:00
下次执行时间点=2017-04-23 15:54:00

 

 

© 著作权归作者所有

qquunn
粉丝 7
博文 27
码字总数 6143
作品 0
广州
私信 提问
加载中

评论(1)

Java6
Java6
谢谢好经验分享!
中小型研发团队架构实践:任务调度Job

一、Job 简介 Job 类似于数据库中的作业,多用于实现定时执行任务。适用场景主要包括定时轮询数据库同步、定时处理数据、定时邮件通知等。 我们的 Job 分为操作系统级别定时任务 WinJob 和 ...

张辉清
2017/12/06
0
0
Spring+Quartz实现定时任务 (二)

在我们进行软件项目开发的过程中,相信大家在很多时候都会遇到如下业务场景:每天、每周或每月生成相应的业务报表;每天统计系统注册人数;定期清理平台长久不登录的用户等等。遇到这种业务场...

yzbty23
2016/04/21
164
0
第四十章:基于SpringBoot & Quartz完成定时任务分布式多节点负载持久化

在上一章【第三十九章:基于SpringBoot & Quartz完成定时任务分布式单节点持久化】中我们已经完成了任务的持久化,当我们创建一个任务时任务会被定时任务框架自动持久化到数据库,我们采用的...

恒宇少年
2017/11/12
0
0
Spring Quartz 任务静态配置和动态添加

Quartz任务可以静态配置到配置文件中,也可以动态添加. 1.Quartz任务 静态配置 其中 <property name="concurrent" value="false"/>,是设置job不能并发执行。 2.Quartz任务 动态添加 定时器动......

满小茂
2016/12/20
527
0
JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务

基于Spring Boot Quartz开发的JavaLib-quartz,目的是帮你快速构建定时任务系统,你可以专心编写你的业务逻辑,而不必关注定时任务具体是如何实现的,他的性能如何,有没有异常以及异常处理,...

冯文议
2018/07/30
79
0

没有更多内容

加载失败,请刷新页面

加载更多

存储过程/函数列表Mysql命令行

如何在mysql命令行(如show tables;查看存储过程或存储函数的列表show tables; 或show databases; 命令。 #1楼 以名称方式查看程序 select name from mysql.proc 下面的代码用于列出所有过...

技术盛宴
28分钟前
57
0
Flutter学习-Dart基础

dart语言基础 https://www.dartcn.com/guides/language/language-tour 在学习 Dart 语言时, 应该基于以下事实和概念: 任何保存在变量中的都是一个_对象_, 并且所有的对象都是对应一个_类_...

小树coding
29分钟前
49
0
服务器升级至centos8 网站配置-php与mysql从5.6升级到php7与msyql

linux centos8 安装php7 nginx1.4 mysql8 ,运行php网站,各个模块从零开始配置 CentOS7与centOS8的抉择 目前国内各大云服务器的默认centos 系统版本还是7,目前没有centos配套支持,国外云服...

zhoulujun
36分钟前
39
0
记一次 MySQL主从复制 从库主键冲突 导致从库中继日志持续增大

问题描述 同事反馈 MySQL主从复制主键冲突 , 导致从库大量relay中继日志 持续增长 导空间不足 查看从库复制状态 master10.23.234.140mysql> show master status\G;***************...

雁南飞丶
38分钟前
43
0
CentOS 7 安装最新版本 Git-2.25.0

Git-2.25.0 最新版本已发布,Windows 系统下已有人安装体验了 2.25.0 的版本,下面我把作者原创的 blog 帖上来分享给大家,方便查看体验。 https://blog.csdn.net/ynzhang_it/article/detai...

万事通
44分钟前
49
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部