天天看點

《JUnit實戰(第2版)》—第2章2.3節JUnit的測試運作器

本節書摘來自異步社群《junit實戰(第2版)》一書中的第2章2.3節junit的測試運作器,作者【美】petar tahchiev , felipe leme , vincent massol , gary gregory,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

2.3 junit的測試運作器

junit實戰(第2版)

如果你剛開始編寫測試,那麼你會希望盡可能快捷地運作它們。這樣你就能夠将測試融合到開發循環中去:編碼→運作→測試→編碼(或者測試→編碼→運作→測試,如果你偏愛測試先行的方式)。現在有很多ide(內建開發環境)與編譯器都可以快速建構并運作應用程式,其中junit就可以讓你建構和運作測試。

2.3.1 測試運作器簡介

junit 4可以向後相容3.8.x版本。因為junit的4.x版本與3.x版本完全不同,是以junit 4很有可能不僅要運作junit 4的測試還要運作junit3.x版本的測試。這也就是為什麼在junit的最新版本中提供了不同的運作器(如表2.3所示),分别用來運作junit 3.x、junit 4的測試以及其他不同的測試集。

表2.3 junit 4的測試運作器

《JUnit實戰(第2版)》—第2章2.3節JUnit的測試運作器

如果測試類中沒有提供任何運作器,那麼junit将會使用一個預設的運作器。如果你希望junit使用某個特定的測試運作器,那麼就使用@runwith注釋來指定測試運作器類,如以下代碼所示:

《JUnit實戰(第2版)》—第2章2.3節JUnit的測試運作器

現在我們已經初步了解了不同的測試運作器以及如何指導junit來使用它們,下面我們将更深入地探讨各種測試運作器。

2.3.2 junitcore façade

為了能夠盡可能快捷地運作測試,junit提供了一個façade(org.junit.runner.junitcore),它可以運作任何測試運作器。junit設計這個façade來執行你的測試,并收集測試結果與統計資訊。你可以在第1章的圖1.3中看到實際應用中的junitcore類。

設計模式實踐:façade

façade1是一種設計模式,它為子系統中的一組接口提供了一個統一的接口。façade定義了一個更進階别的接口,使得子系統更易于使用。你可以使用façade來将一些複雜的對象互動簡化成一個單獨的接口。

junit的façade決定使用哪個運作器來運作你的測試。它支援junit 3.8的測試、junit 4的測試以及兩者的混合體。

在junit 4版本之前,junit包含了swing與awt測試運作器;但是到了junit 4就不再包含它們了。那些圖形化界面的測試運作器都帶有一個橫跨螢幕的進度訓示條,這就是著名的junit綠條。junit的使用者都喜歡把通過測試叫做“綠條”,把測試失敗叫做“紅條”。是以,“保持綠條就是保持代碼幹淨”是junit的座右銘。

圖2.1顯示了在eclipse中一個綠條測試運作後的junit視圖。

《JUnit實戰(第2版)》—第2章2.3節JUnit的測試運作器

目前,所有主要的ide都支援與junit的內建。

2.3.3 自定義測試運作器

不像junit架構中的其他元素,這裡沒有runner接口。相反,junit自帶的幾個測試運作器都繼承了org.junit.runner.runner類。如果想建立你自己的測試運作器,你就需要擴充runner類。關于這個話題的詳細介紹,可以參考本書的附錄b。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。