难度:测试中执行线程操作

 package com.hfepc.job.dataCollection.test;

 import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.CountDownLatch; import javax.annotation.Resource; import org.junit.Test;
import org.junit.runner.RunWith;
import org.pentaho.di.job.Job;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional; import com.hfepc.service.dataCollection.IDataCollectionService;
import com.hfepc.service.zkinsp.MySpringJUnit4ClassRunner; @SuppressWarnings("unused")
@RunWith(MySpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:spring-context.xml",
"classpath*:spring-servlet.xml", "classpath*:cxf-client.xml" })
@ActiveProfiles("development")
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
public class DataCollectionTest extends Job { private final Logger log = LoggerFactory
.getLogger(DataCollectionTest.class); @Resource(name = "IDataCollectionService")
private IDataCollectionService IDataCollectionService; private final int i = 3;
/*
* 线程计数器
* 将线程数量初始化
* 每执行完成一条线程,调用countDown()使计数器减1
* 主线程调用方法await()使其等待,当计数器为0时才被执行
*/
private final CountDownLatch latch = new CountDownLatch(i); @Test
public void createTest() {
Timer timer;
timer = new Timer();
timer.schedule(new TimerTaskTest03(), 0, 60000);
//三个参数
//第一个执行内容:内容是定时任务的执行内容,通过实现抽象类来完成这个动作
//第二个参数内容:是在第多少时间之后开始执行定时任务内容,该参数不能小于0
//第三个参数内容:是在两个任务之间的执行时间间隔,该参数不能小于等于0
try {
latch.await(); // 主线程等待
} catch (InterruptedException e) {
e.printStackTrace();
}
70
private class TimerTaskTest03 extends TimerTask { @Override
public void run() {
Date date1 = new Date(this.scheduledExecutionTime());
String date = DateUtils.format(DateUtils.getCurDate(),
"yyyy/MM/dd");
99 log.error("本次执行该线程的时间为:" + date1);
log.info("时间:" + date);
String sql = "SELECT A.[Date] AS 'date_sta',A.barcode1 AS 'barcode1_sta',A.barcode2 AS 'barcode2_sta',A.HeightNum1Range AS 'HeightNum1Range',A.HeightNum2Range AS 'HeightNum2Range',A.HeightNum3Range AS 'HeightNum3Range',A.HeightData AS 'HeightData',A.HeightDL AS 'HeightDL',A.Num AS 'Num',A.CCDFlag AS 'CCDFlag',A.barcode3 AS 'barcode3',A.PressData AS 'PressData',B.SpurtData AS 'SpurtData',B.[Date] AS 'date_glu',B.CCDODRange AS 'CCDODRange',B.CCDODValue AS 'CCDODValue',B.CCDODFlag AS 'CCDODFlag',B.CCDConcentricityRange AS 'CCDConcentricityRange',B.CCDConcentricityValue AS 'CCDConcentricityValue',B.CCDConcentricityFlag AS 'CCDConcentricityFlag',B.barcode2 AS 'barcode2_glu',B.Static AS 'Static',B.SheetIron AS 'SheetIron',B.VerticalityFlag AS 'VerticalityFlag',B.TorsionData AS 'TorsionData' FROM[dbo].[StaticComponentsProductionData] A LEFT JOIN [dbo].[GlueDispenserProductionData] B ON A.barcode1 = B.barcode1 WHERE A.[Date] LIKE '"
+ date + "%'";
List<Map<String, Object>> rows = IDataCollectionService
.readSQLData(sql);
log.info("返回标签:" + rows.size());
log.info("返回标签:" + (String) rows.get(0).get("barcode2_sta"));
}
} }

Junit 4 测试中使用定时任务操作的更多相关文章

  1. TV测试中的按键长按操作模拟

    从UiAutomator在TV测试中的局限性说起: 智能TV的操作和手机的操作有很大不同,一般智能TV的操作为遥控器按键操作,来向TV OS发送  KeyCode,以完成指定操作. UiAutomat ...

  2. Junit测试中找不到junit.framework.testcase

    在使用Junit进行测试时,出现如下问题: 找不到junit.framework.testcase 解决方法: 选中项目->属性->Java构建路径->库->添加外部jar 在 ...

  3. Mockito在JUnit测试中的使用

    Mockito是一种用于替代在测试中难以实现的成员,从而让testcase能顺利覆盖到目标代码的手段.下面例子将展示Mockito的使用. 完整代码下载:https://files.cnblogs.c ...

  4. PHP中使用PDO操作事务的一些小测试

    关于事务的问题,我们就不多解释了,以后在学习 MySQL 的相关内容时再深入的了解.今天我们主要是对 PDO 中操作事务的一些小测试,或许能发现一些比较好玩的内容. 在 MyISAM 上使用事务会怎么 ...

  5. spring项目中使用定时任务

    当我们希望在某个时间点来执行一些业务方法的时候就用到定时任务,在spring的项目中使用定时任务很简单.如下 第一步.加入jar包 <dependency> <groupId> ...

  6. Appium 在 Android UI 测试中的应用

    原文地址:https://blog.coding.net/blog/Appium-Android-UI Android 测试工具与 Appium 简介 Appium 是一个 C/S 架构的,支持 An ...

  7. MyBatis 中实现SQL语句中in的操作 (11)

    MyBatis 中实现SQL语句中in的操作 概括:应用myBatis实现SQL查询中IN的操作 1.数据库结构及其数据 2.mapper.xml文件 <?xml version="1 ...

  8. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  9. 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】

    一.JQuery中的DOM操作. 什么是DOM:DOM是一中和浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DOM简称文档对象模型,是Document Oject Mode ...

随机推荐

  1. wget命令企业级应用参数详解

    wget -O /etc/yum.repos.d/CentOS-Base.repo --spider: 爬虫,检查网站是不是好的 -T: 指定超时时间 --tries=2  指定重试的次数 -q   ...

  2. js 实现table每列可左右拖动改变列宽度 【转载】

    <!DOCTYPE HTML> <html> <head> <meta charset="gbk"> <title>ta ...

  3. 关于del命令

    del命令用于删除具体的文件,但是删除文件的时候如果不指定文件的扩展名就会显示找不到文件 还有如果所要删除文件的文件名中含有空格的话该命令会自动识别为几个文件,就从空格处把文件 分成几份,然后就会显示 ...

  4. jdk7u79linuxx64.tar.gz下载

    jdk1.7下载: 百度云盘链接:https://pan.baidu.com/s/1cQFLnS 密码:wdek

  5. 温故而知新----stack

    stack:栈,先进后出,操作方法相对其它容器来说比较少,具有以下特性:1.LIFO 后进先出,与队列相反,队列时FIFO(先进先出)2.没有迭代器访问.3.C++ 11标准中新增了两个接口,如下:  ...

  6. 什么是yum源,如何更改yum源

    Yum(全称为 Yellow dog Updater, Modified) yum是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器 ...

  7. python爬微信公众号前10篇历史文章(6)-话说http cookies

    早期Web开发面临的最大问题之一是如何管理状态.简言之,服务器端没有办法知道两个请求是否来自于同一个浏览器.这是cookies的起源. 什么是cookie? A cookie is a small s ...

  8. 【前端】input radio多选事件获取所有选中的id,radio样式优化可修改

    $("#all_button").on('click', function() { obj = document.getElementsByClassName("inpu ...

  9. http协议中302和303的区别

    http1.0协议中只有302码,没有303状态码:http1.1,在默认情况下,很多服务端基础程序,为了兼容http1.0,在遇到本应响应303时,也给客户端响应了302. 碰到的问题: 场景: 在 ...

  10. Mycat 注解说明

    我们知道MySQL 数据库有自己的SQL注解(hint),比如 use index.force index.ignore index 等都是会经常用到的,Mycat 作为一个数据库中间件,最重要的是 ...