Java UnitTest工具的選擇 Junit vs TestNG?
這篇文主要說明unitTest工具的選擇 Junit or TestNG?
JUnit or TestNG 都是用來做unitTest 的工具,兩者的可以提供的功能相近,
Junit因為在市場上很久,所以使用的人比較多相對很成熟。
TestNG也是成熟的技術,不管是從Junit移植到testNG或是要新學習TestNG都不會有太大門檻。
因此,如果目前使用的工具是 Junit多半會繼續沿用。
而如果開發團隊都還沒有選用任何工具時,就可以從 Junit or TestNG 擇一。
兩者到底有什麼差異呢?
業界使用狀況
https://www.google.com/trends/explore#q=junit,testng
從Google這個 Junit 與 TestNG使用的趨勢看來,Junit 大幅減少。奇怪的是 TestNG其實並沒有大幅增加。
只能說Junit 的使用狀況還是比 TestNG普及。
UnitTesting framework 提供什麼?
為什麼要使用 unitTest Framework,通常一個 unitTest 的framework 通常會提供幾個基本的功能
- 執行測試程式 testing cases
- Assertion驗證測試結果
- Data Driven Testing 從資料檔案讀取測試資料測試
- 產生測試結果報告
- 產生測試 log
TestNG筆 Junit多了什麼功能?
從這兩張表可以知道TestNG主要多了三個功能,就看讀者需不需要用到
- 參數化的執行。TestNG可以很容易的將參數寫在XML檔案,讓測試程式可以讀取。
- Group Test: TestNG可以將某些測試個案設定為一組測試群組。
- Dependency Test: TestNG 可以指定某些測試個案的先後順序關係。例如 Test1 執行後再執行 Test2
- TestNG可以直接執行 Junit testing cases: 程式不用更改的情況下,TestNG 可以直接執行 Junit所完成的測試程式。
- HTML測試結果報告: TestNG 執行完畢後會在 “test-output”的路徑下,產生一個HTML報告。相對的,Junit還要額外透過ANT的設定。
- Multiple-threads 執行:TestNG可以指定用多少 threads執行特定測試個案 n 次。
筆者經驗
對於 Junit 或是 TestNG的選用其實差異並不大。
因為TestNG新增的功能,對於Junit來說還是有其他方式可以完成。
筆者特別說兩個TestNG常用的優點
- 測試報告結果 HTML: TestNG本身不需要額外的設定或是套件就可以自動產生HTML測試報告。
- 測試的參數資料: TestNG僅需要把測試參數寫在XML就可以自動讀取相對應的變數。
TestNG在測試資料執行上與測試結果呈現都很方便。
到底選哪一個? 如果既有的系統已經採用 Junit,那麼繼續沿用也沒有不妥。
如果要遷移到 TestNG,TestNG也提供可以直接執行Junit 測試程式的方式。
如果目前完全沒有使用 Junit or TestNG的話,那麼不妨可以直接考慮使用 TestNG。
TestNG内建測試報告HTML的功能,讓我們在不需要額外整合的情況下就可以有漂亮的HTML測試報告。