您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
擴展JUnit測試并行程序
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2016/6/16 16:25:39 ] 推薦標簽:單元測試 軟件測試工具

  如果我們在 Eclipse 中運行測試,那么測試完畢之后的 JUnit 視圖如下所示:
  圖 2. 并行測試的完成結(jié)果

  從上圖可以看出,我們的并行測試用例通過了測試,并且它們在使用不同線程運行時都能正常的工作。而串行的測試方法 (doNothing) 的執(zhí)行結(jié)果則完全和之前一樣工作正常。也是說,串行和并行測試可以在一個測試類中同時出現(xiàn)。
  Annotation 詳細說明
  表 1. 擴展的 annotation 說明

  擴展 JUnit 的過程說明
  歸功于 JUnit 的靈活的內(nèi)部架構(gòu),只要遵循 JUnit 的標準,我們能夠輕松的擴展 JUnit 的功能。而且遵循標準還意味著我們的擴展能無縫的利用社區(qū)對 JUnit 的廣泛支持。例如,我們沒有編寫任何 Eclipse 插件,但是我們的測試結(jié)果能自然的在 Eclipse 中通過精心設(shè)計的 GUI 進行展現(xiàn)。
  言歸正傳,我們擴展 JUnit 的過程主要由以下過程組成:
  生成 Annotation 的定義,包括:@Threaded, @InitFor, @Check, @ParallelSetting
  生成 TestClassRunner 的子類 Parallelized 并在其中實現(xiàn)運行自定義測試的邏輯
  生成 TestMethodRunner 的子類供 Parallelized 類使用
  在實現(xiàn) ThreadedMethodRunner 時,我們開始在類 ThreadedMethodRunner 使用了 Thread 類的 setDefaultUncaughtExceptionHandler 來捕獲異常。然后將異常封裝到主線程。而目前的版本則利用了 Executor 來運行多線程測試。由于 JDK 中的 Future 已經(jīng)提供了類似的能力,所以我們不需要再關(guān)心異常的正確傳遞問題了。 JUnit 能準確的打印出并行測試中產(chǎn)生的異常信息,這也意味著我們可以使用 JUnit 提供的 Assert 功能了。
  結(jié)論
  隨著多核平臺逐漸成為主流,開發(fā)人員不可避免地需要開發(fā)和測試并行應(yīng)用。本文通過使用 Annotation 擴展 JUnit,使其可以更方便地支持“準備數(shù)據(jù)——多線程運行——檢查結(jié)果”三階段的并行測試模式,減少開發(fā)人員手工創(chuàng)建線程和同步的繁瑣工作。并且可以使 JUnit 支持從子線程中捕獲測試錯誤,正確地在 Eclipse 等 IDE 中顯示測試結(jié)果。

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