關於testNG和JUnit的對比

2022-09-15 05:27:08 字數 2491 閱讀 7828

關於選擇junit還是選testng,這幾篇文章,建議讀一讀:

junit api文件:

testng 6.11:

testng documentation:

兩個框架的對比:

junit 4 與 testng 的對比:

junit vs testng: which testing framework should you choose?:

j**a測試框架比較:testng vs junit 4:

junit 4 與 testng 對比:

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

testng與junit的相同點:

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

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

3. 都是針對j**a測試的工具。

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

@test

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

–@beforesuite

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

–@aftersuite

在測試之前需要執行的

–@beforetest

在測試之後需要執行的

–@aftertest

在乙個測試方法所屬於的任意乙個組的第乙個方法被呼叫之前執行

–@beforegroups

在乙個測試方法所屬於的任意乙個組的最後乙個方法被呼叫之後執行

–@aftergroups

在當前類的第乙個測試方法呼叫之前執行

@beforeclass

@beforeclass

在當前類的最後乙個測試方法呼叫之後執行

@afterclass

@afterclass

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

@before

@beforemethod

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

@after

@aftermethod

忽略@ignore

@test(enbale=false)

預期異常

@test(expected = arithmeticexception.class)

@test(expectedexceptions = arithmeticexception.class)

超時@test(timeout = 1000)

@test(timeout = 1000)

(注:**摘自)

待補充... 

關於junit的使用問題

第一次使用junit的時候出現錯誤 error statuslogger log4j2 could not find a logging implementation.please add log4j core to the classpath.using logger to log to the ...

testng的安裝和使用

1 testng是什麼?是一種測試框架,可以更方便的執行測試用例。2 如何安裝?eclipse help install new software work with輸入 等待幾秒鐘,選中testng,一路next window preferences 能看到testng,就是安裝成功了。3 專案右...

junit3和junit4的區別

junit3 必須引入junit.framwork.testcase 必須繼承testcase 測試方法必須以test開頭 每個測試方法前自動呼叫setup 方法,結束後呼叫teardown 方法 junit4 必須引入org.junit.test org.junit.assert.不用繼承test...