Selenium 中的 TestNG 和 JUnit 框架是什麼?


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

在本文中,我們將討論 JUnit 和 TestNG。

什麼是 TestNG

根據其文件,TestNG 的定義如下:

TestNG 是一個受 JUnit 和 NUnit 啟發的測試框架,但引入了一些新功能,使其功能更強大且更易於使用。

TestNG 是一個開源的自動化測試框架,其中 NG 代表 NextGeneration。TestNG 類似於 JUnit(尤其是 JUnit 4),但它不是 JUnit 的擴充套件。它受到 JUnit 的啟發。它旨在比 JUnit 更好,尤其是在測試整合類時。TestNG 的建立者是 Cedric Beust。

TestNG 消除了大多數舊框架的限制,使開發人員能夠編寫更靈活和強大的測試。由於它大量借鑑了 Java 註解(在 JDK 5.0 中引入)來定義測試,因此它還可以向您展示如何在真實的生產環境中使用 Java 語言的這一新功能。

什麼是 JUnit?

與任何其他測試框架相比,JUnit 促使開發人員理解測試(尤其是單元測試)的有用性。JUnit 利用相當簡單、務實且嚴格的架構,已經能夠“感染”大量的開發人員。請檢視我們關於 JUnit 的教程,以深入瞭解其功能。同時,JUnit 也有一些缺點,如下所示:

  • 最初設計用於僅啟用單元測試,現在用於各種測試。

  • 無法進行依賴項測試。

  • 配置控制較差(setUp/tearDown)。

  • 侵入性(強制您擴充套件類並以某種方式命名您的方法)。

  • 靜態程式設計模型(強制您不必要地重新編譯)。

  • 在複雜專案中管理不同的測試套件可能非常棘手。

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 監聽器支援要好得多。

更新於: 2023-08-21

198 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.