想要提升自己的自動化測試技能嗎?本文將介紹10個優(yōu)秀的 Java 測試框架和庫,來提升你的自動化測試技能。

最近,我寫了很多面向Java 開發(fā)者的文章,介紹了一些值得開發(fā)者學(xué)習(xí)的編程語言、庫以及框架。面對多項技術(shù)能力,如果你的精力只夠提升其中一項技能,那么我認(rèn)為自動化測試技能是最值得你去提升的。
測試是一門能夠區(qū)分專業(yè)開發(fā)人員與業(yè)余開發(fā)人員的重要學(xué)科。這不在于你掌握TDD、BDD 或者其他一些測試方法,而是在最基礎(chǔ)的層面,你是否能夠編寫測試代碼來進(jìn)行自動化測試。
許多Java 開發(fā)人員都會編寫單元測試和集成測試代碼,這些測試代碼在構(gòu)建時自動運(yùn)行。開發(fā)者主要借助一些持續(xù)集成工具來編寫測試代碼,比如 Jenkins 或者 TeamCity。
你是否對此充滿疑慮:為什么程序員應(yīng)該關(guān)注自動化測試?事實上,隨著DevOps 的出現(xiàn)和普及,自動化測試的重要性正在呈指數(shù)增長。
公司通常更喜歡那些擅長編寫單元測試的程序員,如果程序員還熟悉各種單元測試框架、庫和工具那就更好了。比如JUnit、Selenium、REST-Assured、Spock 框架等。
作為一名Java 開發(fā)者,我們需要從事各種截然不同的工作。比如,編寫核心 Java 代碼、創(chuàng)建 JSP 頁面、編寫 REST API、甚至編寫 Groovy 腳本用于自動化構(gòu)建。我們還需要了解不同的工具來進(jìn)行自動化測試。
例如,之前很長的一段時間我只知道JUnit。后來我不得不測試 JSP 頁面,當(dāng)我了解了 Selenium 之后頓時豁然開朗。REST Assured 也一樣,我通常使用 curl 指令測試我的REST API ,它將 REST API 的單元測試提升到了一個新的級別。
我認(rèn)為一名優(yōu)秀的程序員需要學(xué)會使用和利用工具,因此我經(jīng)常利用空閑時間學(xué)習(xí)和探索各種新的工具和庫,本文將展示一部分我所熟知的工具。
在本文中,我將分享10個最好的工具、框架和庫,以幫助 Java 開發(fā)人員在不同的 Java 項目中更好地執(zhí)行單元測試和集成測試。
▌JUnit
JUnit 應(yīng)該不需要過多介紹。哪怕你是一位 Java 初學(xué)者,我想你也應(yīng)該聽說過它,它能夠讓你為 Java 代碼編寫單元測試。
幾乎所有常用的IDE,比如 Eclipse、NetBeans 和 IntelliJ,都能夠集成 JUnit,這意味著開發(fā)者直接可以在這些 IDE 中編寫并運(yùn)行單元測試。
目前大多數(shù)人仍然在使用JUnit 4,事實上新的 JUnit 5 已經(jīng)發(fā)布。你可以用 JUnit 進(jìn)行單元測試和集成測試,此外,它還支持 Java 8 功能。

▌REST Assured
相比于Groovy 這類動態(tài)語言,在 Java 中測試和驗證 REST 服務(wù)更難。
REST Assured 為 Java 帶來了這些語言的簡單性。這對于 REST API 集成測試來說是一個很好的工具。

▌Selenium
Selenium 應(yīng)該是最受歡迎的 Java UI 測試工具,有了它,你不需要在瀏覽器中啟動 JSP 頁面即可對其進(jìn)行測試。
你可以使用JUnit 和 Selenium 來測試 Web 應(yīng)用程序 UI。還可以使用它進(jìn)行 Web 應(yīng)用程序驗收測試。

▌TestNG
TestNG 這款測試框架最早源于 JUnit 和 NUnit 的啟發(fā),但它在這兩者的基礎(chǔ)上引入了許多新的功能,其功能更強(qiáng)大,也更易于使用,提供了注解功能,支持在任意大型線程池中運(yùn)行各種可用策略的測試(所有方法都在自己的線程中,每個測試類對應(yīng)一個線程)。
隨著JUnit 4 中注解功能的引入以及 Hamcrest 框架的整合,JUnit 4 和 TestNG 之間的差距已經(jīng)很小。

▌Mockito
Java 有許多 Mock 框架,例如 PowerMock 和 JMock,但我個人更喜歡 Mockito,它具有簡單的 API、優(yōu)秀的文檔以及大量示例。
Mock 測試是現(xiàn)代單元測試的關(guān)鍵技術(shù)之一,開發(fā)者不需要依賴其他情況也可獨(dú)立測試代碼,因此我建議每個 Java 開發(fā)人員都應(yīng)該學(xué)習(xí) Mock 框架來與 JUnit 結(jié)合使用。
我個人最喜歡的Mock 框架是 Mockito,如果你喜歡的話,也可以了解一下 PowerMock或者 JMock。
▌Spock 框架
Spock 是一款用于 Java 和 Groovy 應(yīng)用程序的測試和規(guī)范框架。它用 Groovy 編寫,因此它具有很強(qiáng)的表現(xiàn)力,并且非常規(guī)范。
使用Spock 時,測試將變得更加易讀易維護(hù)。此外,得益于它的 JUnit 運(yùn)行器,Spock能夠兼容大多數(shù) IDE、構(gòu)建工具和持續(xù)集成服務(wù)器。
不過遺憾的是,線上講述Spock 框架的課程好像不多,“使用 Spock 進(jìn)行 Java 測試”這本書倒是一個不錯的學(xué)習(xí)資源。

▌Cucumber
Cucumber 是一款很好的自動化集成測試工具,與其他同類工具相比,它的規(guī)范功能是一大特色。
Cucumber 將規(guī)范和測試文檔合并為一個文檔,由于文檔也會被 Cucumber 自動測試,因此規(guī)范文檔始終會被更新為最新版本。

▌Spring 測試
Spring MVC 自帶了一個非常有用的測試框架,可以在不涉及 Web 容器的情況下進(jìn)行深入測試。
這個是一個非常有用的庫,可以為Spring 應(yīng)用程序編寫自動化測試。它為 Spring 應(yīng)用程序(包括 MVC 控制器)編寫單元和集成測試提供了強(qiáng)有力的支持。
還有一個Spring Test DbUnit,它將 Spring 測試框架與 DbUnit 以及 HtmlUnit 集成在了一起。
使用這些工具,你可以輕松完成Spring MVC 應(yīng)用程序的自動化測試。
▌DBUnit
對于大多數(shù)的Java 應(yīng)用程序,不管是核心 Java 程序還是 Java Web 應(yīng)用,數(shù)據(jù)庫都是其不可或缺的重要組成部分,并且數(shù)據(jù)庫還很可能是單元測試的最大障礙。
連接到Dev 或者 UAT 數(shù)據(jù)庫進(jìn)行集成測試是不可靠的,因為任何人都可以更改數(shù)據(jù)和模式,比如表和存儲過程,這都會導(dǎo)致自動化集成測試的失敗。
DbUnit 是 JUnit 的擴(kuò)展,在每次集成測試之前它可以將數(shù)據(jù)庫初始化為已知狀態(tài),從而確保數(shù)據(jù)庫包含正確的數(shù)據(jù)。
DbUnit 是一個非常有用的工具,它可以幫助我們將測試數(shù)據(jù)和測試代碼分開。

▌Robot 框架
Robot 框架是一個基于 Python 的通用自動化測試框架,主要用于驗收測試以及驗收測試驅(qū)動開發(fā)。
它采用表格測試數(shù)據(jù)語法,是一個關(guān)鍵字驅(qū)動的測試框架。分布式異構(gòu)應(yīng)用程序的驗證往往需要多種技術(shù)和接口,非常適合用Robot 來測試。

▌總結(jié)
以上就是本文介紹的所有針對Java 開發(fā)者的單元測試以及集成測試的工具、框架和庫。
還有更多的庫并沒有包含在這個列表中,例如AssertJ 和 Hamcrest,它們可以幫助你寫出漂亮且流暢的測試程序。
面對如此多的工具,你應(yīng)當(dāng)先學(xué)習(xí)那些與你日常工作最相關(guān)的。例如,如果你的工作主要涉及Java UI,那么你應(yīng)該最先學(xué)習(xí) Selenium,然后再學(xué)習(xí)其他工具來擴(kuò)展和提升自己。
類似的,如果你正在使用REST API,那么最好先學(xué)習(xí) REST Assured。如果你主要從事核心 Java 工作,那么你最先學(xué)習(xí)的應(yīng)該是 JUnit 5。
(這是小編自己建的一個學(xué)習(xí)交流群:164549428,群里可免費(fèi)領(lǐng)取學(xué)習(xí)資料,有興趣的小伙伴可以加一下哦!另外詳情可咨詢微dingyu-003哦!)