- TestNG 教程
- TestNG - 首頁
- TestNG - 概述
- TestNG - 環境搭建
- TestNG - 編寫測試用例
- TestNG - 基本註解
- TestNG - 執行流程
- TestNG - 執行測試
- TestNG - 套件測試
- TestNG - 忽略測試
- TestNG - 分組測試
- TestNG - 異常測試
- TestNG - 依賴測試
- TestNG - 引數化測試
- TestNG - 執行 JUnit 測試
- TestNG - 測試結果
- TestNG - 註解轉換器
- TestNG - 斷言
- TestNG - 並行執行
- TestNG - 與 ANT 整合
- TestNG - 與 Eclipse 整合
- TestNG - TestNG - 對比 JUnit
- TestNG 有用資源
- TestNG - 快速指南
- TestNG - 有用資源
- TestNG - 討論
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 監聽器支援要好得多。 |