JUnit vs TestNG vs Mockito


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

在本文中,我們將瞭解 JUnit 與 TestNG 的區別。

JUnit vs 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 監聽器支援更好。

什麼是 Mockito?

Mockito 是一個模擬框架,它是基於 Java 的。Mockito 和 TestNG/Junit 之間的主要區別在於 Mockito 不是一個測試框架,而後者是。模擬框架意味著為系統生成虛擬資料,可用於試執行或除錯。Mockito 可以與任何測試框架(例如 Junit 或 TestNG 或其他框架)整合。

Mockito 是一個模擬框架,一個基於 Java 的庫,用於有效地對 Java 應用程式進行單元測試。Mockito 用於模擬介面,以便可以向模擬介面新增虛擬功能,這些功能可用於單元測試。Mockito 方便地建立模擬物件。它使用 Java 反射來為給定的介面建立模擬物件。模擬物件只不過是實際實現的代理。

考慮一個股票服務案例,它返回股票的價格詳細資訊。在開發過程中,無法使用實際的股票服務來獲取即時資料。因此,我們需要股票服務的虛擬實現。Mockito 可以非常輕鬆地做到這一點,正如其名稱所示。

更新於: 2023-08-18

808 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告