Java UnitTest工具的選擇 Junit vs TestNG?

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普及。

TestNG Junit

UnitTesting framework 提供什麼?

為什麼要使用 unitTest Framework,通常一個 unitTest 的framework 通常會提供幾個基本的功能

  • 執行測試程式 testing cases
  • Assertion驗證測試結果
  • Data Driven Testing 從資料檔案讀取測試資料測試
  • 產生測試結果報告
  • 產生測試 log

TestNG筆 Junit多了什麼功能?

junit-vs-testngjpg

從這兩張表可以知道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測試報告。

 

Leave a Reply

Your email address will not be published. Required fields are marked *