亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
使用反射+注解實現類似JUnit的效果
作者:網絡轉載 發布時間:[ 2016/5/3 11:32:51 ] 推薦標簽:單元測試 軟件測試工具

  比較特殊的是rate,用于提供一種概率性的運行方式。
  3、框架核心代碼
package com.sigh.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by sigh on 2015/6/10.
*/
public class SimulationFacade {
interface RunMethod {
void run();
double getRate();
}
interface ReportMethod {
void report();
}
private static List<Object> classes = null;
private static List<RunMethod> runMethods = null;
private static List<ReportMethod> reportMethods = null;
private final static int MAX_OPERATION_TIMES = 100;
static {
classes = new ArrayList<>();
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("src/spring-config.xml");
Map<String, Object> beanNames = applicationContext.getBeansWithAnnotation(Simulation.class);
for (Object o : beanNames.values()) {
classes.add(o);
}
System.out.println(beanNames);
runMethods = new ArrayList<RunMethod>();
reportMethods = new ArrayList<ReportMethod>();
for (final Object o : classes) {
Method[] methods = o.getClass().getDeclaredMethods();
for (final Method method : methods) {
if (method.isAnnotationPresent(Run.class)) {
runMethods.add(new RunMethod() {
@Override
public void run() {
try {
method.invoke(o);
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
@Override
public double getRate() {
return method.getAnnotation(Run.class).rate();
}
});
} else if (method.isAnnotationPresent(Report.class)) {
reportMethods.add(new ReportMethod() {
@Override
public void report() {
try {
method.invoke(o);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
});
}
}
}
}
public void run() {
double rate = Math.random();
for (RunMethod method : runMethods) {
if (rate <= method.getRate()) {
method.run();
break;
} else {
rate -= method.getRate();
}
}
}
public void report() {
for (ReportMethod method : reportMethods) {
method.report();
}
}
public static class MulTiThreadSimulation {
private final static int THREAD_NUM = 10;
SimulationFacade simulationFacade = new SimulationFacade();
static AtomicInteger operationTimes = new AtomicInteger(0);
public void run() {
List<Thread> threadList = new ArrayList<Thread>();
for (int i = 0; i < THREAD_NUM; i++) {
Thread thread = new Thread(new Runnable() {
@Override public void run() {
while (operationTimes.getAndIncrement() < SimulationFacade.MAX_OPERATION_TIMES) {
try {
//仿真測試
simulationFacade.run();
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
threadList.add(thread);
}
for (Thread thread : threadList) {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void report() {
simulationFacade.report();
}
}
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException, InstantiationException {
MulTiThreadSimulation mulTiThreadSimulation = new MulTiThreadSimulation();
mulTiThreadSimulation.run();
mulTiThreadSimulation.report();
}
}
  基本的思路也相對比較清晰,所以也沒有太多需要解釋的地方。
  java的內部類確實有很多很有意思的地方,許多地方現在想來還是有些復雜。估計還需要一段時間來慢慢理解java的內存模型了。

上一頁12下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 久久亚洲网 | 中国大陆一级毛片 免费 | 深夜男人天堂 | 色就色欧美 | 男女一进一出无遮挡黄 | 日本a级特黄三级三级三级 日本a一级片 | 日批视频在线免费看 | 色屁屁一区二区三区视频国产 | 永久黄网站色视频免费 | 青娱乐伊人| www.欧美xxx| 国内精品久久久久久久aa护士 | 成人午夜免费在线观看 | 亚洲宅男天堂a在线 | 午夜日韩 | 最近中文字幕mv免费视频 | 国产精品亚洲午夜不卡 | 成人午夜激情 | 日本天堂网在线 | 成年日韩免费大片黄在线观看 | 国产免费播放一区二区 | 日日摸处处碰夜夜爽视频 | 亚洲第一福利网站 | 天天槽夜夜槽槽不停 | 男女午夜性爽快免费视频不卡 | 羞羞网站在线免费观看 | 国产在线视频在线 | 免费观看一级特黄欧美大片 | 中文字幕第99页 | 无遮挡无删动漫肉在线观看 | 中文字幕免费高清视频 | 国产精品青青青高清在线 | 日本xxxx色视频在线观看免 | 国产亚洲欧洲日韩综合v | 亚洲免费片 | 一级毛片高清免费播放 | 久久国产高清一区二区三区 | 欧美成视频在线观看 | 日韩久久久精品首页 | 成人久久18免费游戏网站 | 欧美黄站 |