使用注解 org.junit.AfterClass 修飾用于注銷 Fixture 的方法。
保證這兩種方法都使用 public static void 修飾,而且不能帶有任何參數。
類級別的 Fixture 僅會在測試類中所有測試方法執行之前執行初始化,并在全部測試方法測試完畢之后執行注銷方法(圖6)。代碼范本如下:
//類級別Fixture初始化方法
@BeforeClass public static void dbInit(){……}
//類級別Fixture注銷方法
@AfterClass public static void dbClose(){……}
圖6 類級別 Fixture 執行示意圖
異常以及時間測試
注解 org.junit.Test 中有兩個非常有用的參數:expected 和 timeout。參數 expected 代表測試方法期望拋出指定的異常,如果運行測試并沒有拋出這個異常,則 JUnit 會認為這個測試沒有通過。這為驗證被測試方法在錯誤的情況下是否會拋出預定的異常提供了便利。舉例來說,方法 supportDBChecker 用于檢查用戶使用的數據庫版本是否在系統的支持的范圍之內,如果用戶使用了不被支持的數據庫版本,則會拋出運行時異常 UnsupportedDBVersionException。測試方法 supportDBChecker 在數據庫版本不支持時是否會拋出指定異常的單元測試方法大體如下:
@Test(expected=UnsupportedDBVersionException.class)
public void unsupportedDBCheck(){
……
}
注解 org.junit.Test 的另一個參數 timeout,指定被測試方法被允許運行的最長時間應該是多少,如果測試方法運行時間超過了指定的毫秒數,則JUnit認為測試失敗。這個參數對于性能測試有一定的幫助。例如,如果解析一份自定義的 XML 文檔花費了多于 1 秒的時間,就需要重新考慮 XML 結構的設計,那單元測試方法可以這樣來寫:
@Test(timeout=1000)
public void selfXMLReader(){
……
}
忽略測試方法
JUnit 提供注解 org.junit.Ignore 用于暫時忽略某個測試方法,因為有時候由于測試環境受限,并不能保證每一個測試方法都能正確運行。例如下面的代碼便表示由于沒有了數據庫鏈接,提示 JUnit 忽略測試方法
文章來源于領測軟件測試網 http://www.kjueaiud.com/