TestNG - 對比 JUnit



JUnit 和 TestNG 是 Java 應用程式中最流行的測試框架。這兩個框架都易於使用。因此,當需要為您的應用程式選擇測試框架時,最好對其中一個或另一個框架具有的功能有一個高階概念,然後根據您的專案需求做出明智的決定。

JUnit 與 TestNG

JUnit 當前版本為 5.7.1,它仍在不斷發展,並致力於包含更多功能。TestNG 當前版本為 7.4.0,它已經成熟並且功能豐富。

下表比較了 JUnit 和 TestNG 在不同功能上的差異。該表不包括這兩個框架中都存在的非常具體或常見的功能,例如測試異常、超時設定、生命週期回撥方法等。

功能 JUnit TestNG 結論

註解

基於註解

基於註解

JUnit 5 和 TestNG 都是基於註解的。它們在本質和行為上都很相似。

易用性

JUnit 5 內置於各種模組中,您需要 JUnit Platform 和 JUnit Jupiter 來編寫測試用例。如果您需要更多功能,例如引數化測試,則需要新增 junit-jupiter-params 模組。

單個模組即可獲取所有 TestNG 功能。

在易用性方面,TestNG 更好。

IDE 支援

支援主要的 IDE,例如 Eclipse 和 IntelliJ IDEA。

支援主要的 IDE,例如 Eclipse 和 IntelliJ IDEA。

兩者都相似,並提供與主要 IDE 的輕鬆整合。

資料提供者

支援多種提供測試資料的方式,例如方法、列舉、CSV、CSV 檔案等。

支援資料提供者方法和來自測試套件 xml 檔案的資料。

JUnit 更適合注入測試方法的輸入資料

測試套件

在 JUnit 中,測試套件使用 @RunWith 和 @Suite 註解執行。

TestNG 使用 XML 檔案來執行套件測試。

HTML 報告

JUnit 需要外部外掛 maven-surefire-report-plugin 生成 HTML 報告。

TestNG 自動為測試執行建立 HTML 報告。

TestNG HTML 報告看起來有點過時,但使用簡單。如果您需要與其他人共享 HTML 報告,我建議您使用 JUnit。

從 Java 主方法執行

我們可以使用 JUnit 5 啟動器 API 從 Java 主方法執行測試。

我們可以使用 TestNG run() 方法從 Java 主方法執行測試。

兩者都支援從 Java 主方法執行測試用例。

斷言

JUnit 提供了足夠的斷言方法來比較預期和實際的測試結果。

TestNG 提供了足夠的斷言方法來比較預期和實際的測試結果。

兩者在斷言支援方面都很相似。

假設

JUnit 支援假設,以便根據某些條件跳過測試。

TestNG 不支援假設。

如果您想根據條件跳過測試,JUnit 更好。

測試順序

Junit 不支援測試順序。

TestNG 支援測試順序,以便根據優先順序屬性對測試方法進行排序。

當您想要按特定順序執行測試時,TestNG 更好。

停用測試

JUnit 支援多種停用和啟用測試的方法。例如,基於作業系統、JRE、系統屬性。

TestNG 支援停用測試,但功能有限。

當您想根據條件停用或啟用測試時,JUnit 更好。

並行執行

JUnit 5 尚未支援並行執行。

如果透過 XML 套件執行,TestNG 支援並行執行。

目前,TestNG 更適合並行執行,JUnit 5 正在開發中以支援此功能。

監聽器

JUnit 透過 Launcher API 支援監聽器,沒有使用註解新增監聽器的機制。

TestNG 支援各種型別的監聽器,並且可以使用註解新增。

與 JUnit 5 相比,TestNG 監聽器支援要好得多。

廣告

© . All rights reserved.