您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
自定義注解過濾JUnit測試類
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/10/28 15:59:00 ] 推薦標(biāo)簽:

  PS:編寫測試類時,一般是在基類中讀取配置文件,并為某些成員賦值。而在MyBuilder中傳入基類的成員變量作為過濾條件是不行的,因為MyBuilder的運(yùn)行還在測試基類之前,此時基類的任何變量都為null。在MyBuilder中自定義過濾條件的變量,必須在MyBuilder中從配置文件里實時讀取。由于基類也需要加載配置文件,為避免重復(fù)加載,建議將讀配置類實現(xiàn)為單例模式:
public class MyConfiguration {
private volatile static MyConfiguration uniqueInstance;
private Properties propertie;
private FileInputStream inputFile;
private MyConfiguration() {
propertie = new Properties();
}
private MyConfiguration(String configFile) {
propertie = new Properties();
try {
inputFile = new FileInputStream(configFile);
propertie.load(inputFile);
inputFile.close();
} catch (FileNotFoundException ex) {
System.out
.println("load properties file failed! maybe file not exist!");
ex.printStackTrace();
} catch (IOException ex) {
System.out.println("load properties file failed!");
ex.printStackTrace();
}
}
/**
* @return unique instance
*/
public static MyConfiguration getInstance(String configFile) {
if (uniqueInstance == null) {
synchronized (MyConfiguration.class) {
if (uniqueInstance == null) {
uniqueInstance = new MyConfiguration(configFile);
}
}
}
return uniqueInstance;
}
public String getValue(String key) {
if (propertie.containsKey(key)) {
String value = propertie.getProperty(key);
return value;
} else
return "";
}
}
  相應(yīng)的,MyBuilder可修改為:
public class MyBuilder extends RunnerBuilder {
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
String properties = "src/test/resources/test.properties";
MyConfiguration conf = MyConfiguration.getInstance(properties);
if (testClass.getAnnotation(MyIgnore.class) != null) {
if (!"true".equals(conf.getValue("runFlag")))
return new IgnoredClassRunner(testClass);
}
return new BlockJUnit4ClassRunner(testClass);
}
}

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