天天看點

關于testNG和JUnit的對比

關于選擇JUnit還是選testNG,這幾篇文章,建議讀一讀:

API參考文檔:

兩個架構的對比:

.....................

TestNG與JUnit的相同點:

       1. 使用annotation,且大部分annotation相同。

       2. 都可以進行單元測試(Unit test)。

       3. 都是針對Java測試的工具。

TestNG與JUnit的不同點:

      1. JUnit隻能進行單元測試,TestNG可以進行單元測試,功能測試,端到端測試,內建測試等。

      2. TestNG需要一個額外的xml配置檔案,配置測試的class、method甚至package。

      3. TestNG的運作方式更加靈活:指令行、ant和IDE,JUnit隻能使用IDE。

      4. TestNG的annotation更加豐富,比如@ExpectedExceptions、@DataProvider等。

      5. 測試套件運作失敗,JUnit 4會重新運作整個測試套件。TestNG運作失敗時,會建立一個XML檔案說明失敗的測試,利用這個檔案執行程式,就不會重複運作已經成功的測試。

TestNG比JUnit 4靈活性的展現:

      1. JUnit 4中必須把@BeforeClass修飾的方法聲明為public static,這就限制了該方法中使用的變量必須是static。而TestNG中@BeforeClass修飾的方法可以跟普通函數完全一樣。

      2. JUnit 4測試的依賴性非常強,測試用例間有嚴格的先後順序。前一個測試不成功,後續所有的依賴測試都會失敗。TestNG 利用@Test 的dependsOnMethods屬性來應對測試依賴性問題。某方法依賴的方法失敗,它将被跳過,而不是标記為失敗。

      3. 對于n個不同參數組合的測試,JUnit 4要寫n個測試用例。每個測試用例完成的任務基本是相同的,隻是受測方法的參數有所改變。TestNG的參數化測試隻需要一個測試用例,然後把所需要的參數加到TestNG的xml配置檔案中。這樣的好處是參數與測試代碼分離,非程式員也可以修改參數,同時修改無需重新編譯測試代碼。

      4. 為了測試無法用String或原語值表示的複雜參數化類型,TestNG提供的@DataProvider使它們映射到某個測試方法。

      5. JUnit 4的測試結果通過Green/Red bar展現,TestNG的結果除了Green/Red bar,還有Console視窗和test-output檔案夾,對測試結果的描述更加詳細,友善定位錯誤。

Junit 4 和 TestNG 在注解方面的實作非常相似。

特性

JUnit 4

TestNG

測試注解

@Test

測試套件在執行之前需要執行的

@BeforeSuite

測試套件在執行之後需要執行的

@AfterSuite

在測試之前需要執行的

@BeforeTest

在測試之後需要執行的

@AfterTest

在一個測試方法所屬于的任意一個組的第一個方法被調用之前執行

@BeforeGroups

在一個測試方法所屬于的任意一個組的最後一個方法被調用之後執行

@AfterGroups

在目前類的第一個測試方法調用之前執行

@BeforeClass

在目前類的最後一個測試方法調用之後執行

@AfterClass

每個測試方法之前需要執行

@Before

@BeforeMethod

每個測試方法之後需要執行

@After

@AfterMethod

忽略

@ignore

@Test(enbale=false)

預期異常

@Test(expected = ArithmeticException.class)

@Test(expectedExceptions = ArithmeticException.class)

逾時

@Test(timeout = 1000)

(注:表格摘自http://www.importnew.com/16270.html)

本文轉自 念槐聚 部落格園部落格,原文連結:http://www.cnblogs.com/haochuang/p/7382329.html,如需轉載請自行聯系原作者