回覆列表
  • 1 # lanfengz2

        TestNG和JUnit是針對Java語言的兩個比較常用的測試框架。JUnit出現的比較早,但是早期的JUnit 3對測試程式碼有非常多的限制,使用起來很不方便,後來的JUnit 4得到很大的改進。TestNG的出現介於JUnit 3和JUnit 4,但是TestNG在很多方面還要優於JUnit 4。下面從整體上對TestNG和JUnit 4進行比較全面的比較。

      TestNG與JUnit的相同點:

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

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

    都是針對Java測試的工具。

      TestNG與JUnit的不同點:

    JUnit只能進行單元測試,TestNG可以進行單元測試(unit test),功能測試(function test),端到端測試(e2e test),整合測試(Integration test)等。

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

    TestNG的執行方式更加靈活:命令列、ant和IDE,JUnit只能使用IDE。

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

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

      TestNG比JUnit 4靈活性的體現:

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

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

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

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

    JUnit 4的測試結果透過Green/Red bar體現,TestNG的結果除了Green/Red bar,還有Console視窗和test-output資料夾,對測試結果的描述更加詳細,方便定位錯誤。

      簡單說就是TestNG比Junit強大, 但是那些更強大的功能你全部都用不到的話, 那你還是就用junit, 比較簡單, 華人用的多, 出了問題中文也比較好查. 英文還不錯並且有想要了解除了單元測試以外的測試的話, 就用TestNG吧

  • 中秋節和大豐收的關聯?
  • 夢見跳舞?