Java 线程测试框架
来源:互联网 发布:淘宝店怎么样提高销量 编辑:程序博客网 时间:2024/06/05 21:49
《Java编程思想》中的测试框架整理:
1、首先定义个一接口,仅用此接口表示在代码中提供有意义的名字,表示状态。
package com.jereh;public interface InvariantState {}
2、定义两种状态类,表示成功或者失败,失败类对象包括一个对象,该对象表示有关失败的原因信息,这样一般是为了把这种信息显示出来。
package com.jereh;public class InvariantOK implements InvariantState{}
package com.jereh;public class InvariantFailure implements InvariantState{ public Object value; public InvariantFailure(Object value){ this.value = value; }}
3.定义一个接口,任何需要对约束条件进行测试的类都必须实现这个接口:
package com.jereh;public interface Invariant { InvariantState invariant();}
4.定义一个类并继承Timer,如果不出现异常状况则一段时间后自动结束程序:
package com.jereh;import java.util.Timer;import java.util.TimerTask;public class Timeout extends Timer{ public Timeout(int delay,final String msg){ super(true); schedule(new TimerTask(){ public void run(){ System.out.println(msg); System.exit(0); } },delay); }}
5.定义一个线程,使用Invariant接口和Timeout类,用来当作观察者:
package com.jereh;public class InvariantWatcher extends Thread{ private Invariant invariant; public InvariantWatcher(Invariant invariant){ this.invariant = invariant; setDaemon(true); start(); } public InvariantWatcher(Invariant invariant, final int timeOut){ this(invariant); new Timeout(timeOut,"Timed out without violating invariant"); } public void run(){ while(true){ InvariantState state = invariant.invariant(); if(state instanceof InvariantFailure){ System.out.println("Invariant violated:"+((InvariantFailure)state).value); System.exit(0); } } }}
6.测试一下类,将观察者放入要测试的目标类中:
package com.jereh;public class EvenGenerator implements Invariant{ private int i ; public void next(){ i++; i++; } public int getValue(){ return i; } @Override public InvariantState invariant() { int val = i; if( val%2 == 0){ return new InvariantOK(); }else{ return new InvariantFailure(new Integer(val)); } } public static void main(String[] args){ EvenGenerator gen = new EvenGenerator(); new InvariantWatcher(gen); while(true) gen.next(); }}
1 0
- Java 线程测试框架
- Java的线程框架
- java线程池框架
- Java线程池框架
- Java测试框架Junit
- Java web框架测试
- java 常用测试框架
- java 常用测试框架
- JAVA JUnit测试框架
- java测试Junit框架
- java 常用测试框架
- Java JUnit4测试框架
- java测试框架-junit4
- Java测试框架
- java代码线程压力测试
- java线程池框架Executor
- java 测试框架 JMOCK使用
- Java测试框架Automation Center
- 【Cocos2dx】使用CCScale9Sprite拉伸图片
- 指针
- 黑马程序员——集合
- gcc与g++
- 矩阵结构体
- Java 线程测试框架
- C++那些细节--函数的默认参数
- hdu 5414 CRB and String 2015多校联合训练赛#10 贪心
- 简单灵活解决 Viewgroup嵌套 产生的手势冲突问题
- SysBench 0.5 安装
- 用C语言编程求三角形的面积
- POJ1008My Calendar两种日历年月日间的转换月份用字符数组表示
- Android组件之间的信使Intent
- 2015.8.20 多校#10 1009 CRB and String