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

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
自定義注解過濾JUnit測試類
作者:網絡轉載 發布時間:[ 2013/10/28 15:59:00 ] 推薦標簽:

  JUnit是常用單元測試工具,如果希望跳過某個測試類,一般在類上面添加@Ignore注解。實際情況下,經常遇到某些測試類在符合某些條件時需要運行、不符合時又不需要運行的情況,頻繁加減@Ignore注解的話相當繁瑣。有沒有辦法,能根據自己的配置文件,靈活決定是否運行某些測試類呢?
  首先來分析一下JUnit源碼(以4.10版本為例)。在org.junit.runner包下,有個JUnitCore.class,其中的main方法是JUnit入口函數。經過runMainAndExit->runMain->run的多次調用,發現在run之中通過Request.classes方法構建了AllDefaultPossibilitiesBuilder對象,該對象用于選擇RunnerBuilder,繼而選擇Runner執行測試用例。源碼如下:
public static Request classes(Computer computer, Class<?>... classes) {
try {
AllDefaultPossibilitiesBuilder builder= new AllDefaultPossibilitiesBuilder(true);
Runner suite= computer.getSuite(builder, classes);
return runner(suite);
} catch (InitializationError e) {
throw new RuntimeException(
"Bug in saff's brain: Suite constructor, called as above, should always complete");
}
}
  在AllDefaultPossibilitiesBuilder中有個runnerForClass方法,是該方法選擇了RunnerBuilder,并通過調用RunnerBuilder的runnerForClass方法,終決定了
Runner:
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
List<RunnerBuilder> builders= Arrays.asList(
ignoredBuilder(),
annotatedBuilder(),
suiteMethodBuilder(),
junit3Builder(),
junit4Builder());
for (RunnerBuilder each : builders) {
Runner runner= each.safeRunnerForClass(testClass);
if (runner != null)
return runner;
}
return null;
}
  從上述代碼可以看出,正常情況下會選擇JUnit4Builder,其源碼如下:
public class JUnit4Builder extends RunnerBuilder {
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
return new BlockJUnit4ClassRunner(testClass);
}
}
  而一旦對類添加了@Ignore注解,則會選擇IgnoredBuilder,其源碼如下:
public class IgnoredBuilder extends RunnerBuilder {
@Override
public Runner runnerForClass(Class<?> testClass) {
if (testClass.getAnnotation(Ignore.class) != null)
return new IgnoredClassRunner(testClass);
return null;
}
}
  看到這里,我們大體可以認為,BlockJUnit4ClassRunner(testClass)會正常運行測試類,而IgnoredClassRunner(testClass)則會跳過運行測試類。因此,對于開始提出的問題,可以用如下方法解決:構建自己的Builder類,在其中的runnerForClass中根據配置決定是否運行測試類。

上一頁123下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 天天操天天干天天拍 | 老湿成人影院 | 三级黄色高清视频 | 欧美一级片免费在线观看 | 成人三级在线播放 | 又大又粗又爽的三级小视频 | 国产视频网 | 久久免费99精品国产自在现线 | 白洁性荡生活96 | 国产农村精品一级毛片视频 | 欧美极度极品另类 | 国产a v高清一区二区三区 | 免费视频精品一区二区三区 | 性香港xxxxx免费视频播放 | 国产成人在线视频观看 | 亚洲欧美另类日本久久影院 | 无遮挡一级毛片私人影院 | 九九热香蕉视频 | 人人做人人插 | 国产一区精品视频 | 在线 | 一区二区三区 | 综合婷婷丁香 | 特黄aaaaaaaaa及毛片 | 国产三级在线 | 成人午夜性视频欧美成人 | 大片刺激免费播放视频 | 高h猛烈做哭bl壮汉受小说 | 亚洲欧美中文字幕 | 中文字幕第一页在线视频 | 久久久午夜精品理论片 | 在线看黄色网址 | 性欧美激情在线观看 | 成人免费夜片在线观看 | 美女很黄很黄是免费的 | 日本不卡视频网站 | 欧美日韩国产在线播放 | 日韩欧美一区二区不卡看片 | 午夜在线视频免费观看 | 狠狠搞视频 | 国产在线精品一区二区中文 | 在线成人看片 |