zoukankan      html  css  js  c++  java
  • Junit 4 测试中使用定时任务操作

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

      1 package com.hfepc.job.dataCollection.test;
      2 
      3 import java.util.Date;
      4 import java.util.List;
      5 import java.util.Map;
      6 import java.util.Timer;
      7 import java.util.TimerTask;
      8 import java.util.concurrent.CountDownLatch;
      9 
     10 import javax.annotation.Resource;
     11 
     12 import org.junit.Test;
     13 import org.junit.runner.RunWith;
     14 import org.pentaho.di.job.Job;
     15 import org.slf4j.Logger;
     16 import org.slf4j.LoggerFactory;
     17 import org.springframework.test.context.ActiveProfiles;
     18 import org.springframework.test.context.ContextConfiguration;
     19 import org.springframework.test.context.transaction.TransactionConfiguration;
     20 import org.springframework.transaction.annotation.Transactional;
     21 
     22 import com.hfepc.service.dataCollection.IDataCollectionService;
     23 import com.hfepc.service.zkinsp.MySpringJUnit4ClassRunner;
     24 
     25 @SuppressWarnings("unused")
     26 @RunWith(MySpringJUnit4ClassRunner.class)
     27 @ContextConfiguration(locations = { "classpath*:spring-context.xml",
     28         "classpath*:spring-servlet.xml", "classpath*:cxf-client.xml" })
     29 @ActiveProfiles("development")
     30 @Transactional
     31 @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
     32 public class DataCollectionTest extends Job {
     33 
     34     private final Logger log = LoggerFactory
     35             .getLogger(DataCollectionTest.class);
     36 
     37     @Resource(name = "IDataCollectionService")
     38     private IDataCollectionService IDataCollectionService;
     39 
     40     private final int i = 3;
     41     /*
     42      * 线程计数器
     43      *     将线程数量初始化
     44      *     每执行完成一条线程,调用countDown()使计数器减1
     45      *     主线程调用方法await()使其等待,当计数器为0时才被执行
     46      */
     47     private final CountDownLatch latch = new CountDownLatch(i);
     48 
     49     @Test
     50     public void createTest() {
     51             Timer timer;
     52             timer = new Timer();
     53             timer.schedule(new TimerTaskTest03(), 0, 60000);
     54             //三个参数 
     55             //第一个执行内容:内容是定时任务的执行内容,通过实现抽象类来完成这个动作  
     56             //第二个参数内容:是在第多少时间之后开始执行定时任务内容,该参数不能小于0 
     57             //第三个参数内容:是在两个任务之间的执行时间间隔,该参数不能小于等于0
     58             try {
     59                 latch.await(); // 主线程等待
     60             } catch (InterruptedException e) {
     61                 e.printStackTrace();
     62             } 
    70
    91 private class TimerTaskTest03 extends TimerTask { 92 93 @Override 94 public void run() { 95 Date date1 = new Date(this.scheduledExecutionTime()); 96 String date = DateUtils.format(DateUtils.getCurDate(), 97 "yyyy/MM/dd");
    99
    log.error("本次执行该线程的时间为:" + date1); 100 log.info("时间:" + date); 101 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 '" 102 + date + "%'"; 103 List<Map<String, Object>> rows = IDataCollectionService 104 .readSQLData(sql); 105 log.info("返回标签:" + rows.size()); 106 log.info("返回标签:" + (String) rows.get(0).get("barcode2_sta")); 108 } 109 } 110 111 }
    痛苦预示着超脱
  • 相关阅读:
    Android Volley入门到精通:定制自己的Request
    Android高效加载大图、多图解决方案,有效避免程序OOM
    Android Volley入门到精通:使用Volley加载网络图片
    Android Volley入门到精通:初识Volley的基本用法
    彻底理解ThreadLocal
    Android中Parcelable接口用法
    Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解
    Storm流处理项目案例
    021 使用join()将数组转变为字符串
    020 $.each的使用
  • 原文地址:https://www.cnblogs.com/supperlhg/p/8084516.html
Copyright © 2011-2022 走看看