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

  一直好奇JUnit里面@Test的實現(xiàn),搜了不少網(wǎng)頁,大部分都是講的使用方式,很少有人去講解實現(xiàn)原理。自己看源碼看了半天也沒有找到頭緒。
  索性自己摸索著實現(xiàn)了一套類似的效果,下一步準備應用在已經(jīng)完成的仿真測試上,雖然很初級,但也算一個框架了。
  1、定義注解
//Simulation.java
package com.sigh.test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by sigh on 2015/6/10.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE})
public @interface Simulation {
}
//Run.java
package com.sigh.test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by sigh on 2015/6/10.
*/
//類似junit的@Test效果
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Run {
//該操作發(fā)生的概率
double rate() default 0;
}
//Report.java
package com.sigh.test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by sigh on 2015/6/10.
*/
//在所有@Run運行完之后報告結(jié)果
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD})
public @interface Report {
}
  這三個注解是對外提供的全部接口了。
  2、測試類
//First.java
package com.sigh.test;
import org.springframework.stereotype.Service;
/**
* Created by sigh on 2015/6/9.
*/
@Simulation
@Service
public class First {
@Run(rate = 0.5)
boolean run() {
System.out.println("first");
return true;
}
@Report
void report() {
System.out.println("report first");
}
}
//Second.java
package com.sigh.test;
import org.springframework.stereotype.Service;
/**
* Created by sigh on 2015/6/9.
*/
@Simulation
@Service
public class Second {
@Run(rate = 0.5)
long doWork() {
System.out.println("second");
return 3;
}
@Report
void display() {
System.out.println("display second");
}
}

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd