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 可以非常輕鬆地做到這一點,正如其名稱所示。