更新時間:2019-08-26 10:37:54 來源:動力節點 瀏覽2916次
測試是一門能夠區分專業開發人員與業余開發人員的重要學科。這不在于你掌握TDD、BDD或者其他一些測試方法,而是在最基礎的層面,你是否能夠編寫測試代碼來進行自動化測試。
許多Java開發人員都會編寫單元測試和集成測試代碼,這些測試代碼在構建時自動運行。開發者主要借助一些持續集成工具來編寫測試代碼,比如Jenkins或者TeamCity。
你是否對此充滿疑慮:為什么程序員應該關注自動化測試?事實上,隨著DevOps的出現和普及,自動化測試的重要性正在呈指數增長。
公司通常更喜歡那些擅長編寫單元測試的程序員,如果程序員還熟悉各種單元測試框架、庫和工具那就更好了。比如JUnit、Selenium、REST-Assured、Spock框架等。
作為一名Java開發者,我們需要從事各種截然不同的工作。比如,編寫核心Java代碼、創建JSP頁面、編寫RESTAPI、甚至編寫Groovy腳本用于自動化構建。我們還需要了解不同的工具來進行自動化測試。
例如,之前很長的一段時間我只知道JUnit。后來我不得不測試JSP頁面,當我了解了Selenium之后頓時豁然開朗。RESTAssured也一樣,我通常使用curl指令測試我的RESTAPI,它將RESTAPI的單元測試提升到了一個新的級別。
我認為一名優秀的程序員需要學會使用和利用工具,因此我經常利用空閑時間學習和探索各種新的工具和庫,本文將展示一部分我所熟知的工具。
在本文中,小編將分享10個最好的工具、框架和庫,以幫助Java開發人員在不同的Java項目中更好地執行單元測試和集成測試。
▌JUnit
JUnit應該不需要過多介紹。哪怕你是一位Java初學者,我想你也應該聽說過它,它能夠讓你為Java代碼編寫單元測試。
幾乎所有常用的IDE,比如Eclipse、NetBeans和IntelliJ,都能夠集成JUnit,這意味著開發者直接可以在這些IDE中編寫并運行單元測試。
目前大多數人仍然在使用JUnit4,事實上新的JUnit5已經發布。你可以用JUnit進行單元測試和集成測試,此外,它還支持Java8功能。
▌RESTAssured
相比于Groovy這類動態語言,在Java中測試和驗證REST服務更難。
RESTAssured為Java帶來了這些語言的簡單性。這對于RESTAPI集成測試來說是一個很好的工具。
▌Selenium
Selenium應該是最受歡迎的JavaUI測試工具,有了它,你不需要在瀏覽器中啟動JSP頁面即可對其進行測試。
你可以使用JUnit和Selenium來測試Web應用程序UI。還可以使用它進行Web應用程序驗收測試。
▌TestNG
TestNG這款測試框架最早源于JUnit和NUnit的啟發,但它在這兩者的基礎上引入了許多新的功能,其功能更強大,也更易于使用,提供了注解功能,支持在任意大型線程池中運行各種可用策略的測試(所有方法都在自己的線程中,每個測試類對應一個線程)。
隨著JUnit4中注解功能的引入以及Hamcrest框架的整合,JUnit4和TestNG之間的差距已經很小。
▌Mockito
Java有許多Mock框架,例如PowerMock和JMock,但我個人更喜歡Mockito,它具有簡單的API、優秀的文檔以及大量示例。
Mock測試是現代單元測試的關鍵技術之一,開發者不需要依賴其他情況也可獨立測試代碼,因此我建議每個Java開發人員都應該學習Mock框架來與JUnit結合使用。
我個人最喜歡的Mock框架是Mockito,如果你喜歡的話,也可以了解一下PowerMock或者JMock。
▌Spock框架
Spock是一款用于Java和Groovy應用程序的測試和規范框架。它用Groovy編寫,因此它具有很強的表現力,并且非常規范。
使用Spock時,測試將變得更加易讀易維護。此外,得益于它的JUnit運行器,Spock能夠兼容大多數IDE、構建工具和持續集成服務器。
不過遺憾的是,線上講述Spock框架的課程好像不多,“使用Spock進行Java測試”這本書倒是一個不錯的學習資源。
▌Cucumber
Cucumber是一款很好的自動化集成測試工具,與其他同類工具相比,它的規范功能是一大特色。
Cucumber將規范和測試文檔合并為一個文檔,由于文檔也會被Cucumber自動測試,因此規范文檔始終會被更新為最新版本。
▌Spring測試
SpringMVC自帶了一個非常有用的測試框架,可以在不涉及Web容器的情況下進行深入測試。
這個是一個非常有用的庫,可以為Spring應用程序編寫自動化測試。它為Spring應用程序(包括MVC控制器)編寫單元和集成測試提供了強有力的支持。
還有一個SpringTestDbUnit,它將Spring測試框架與DbUnit以及HtmlUnit集成在了一起。
使用這些工具,你可以輕松完成SpringMVC應用程序的自動化測試。
▌DBUnit
對于大多數的Java應用程序,不管是核心Java程序還是JavaWeb應用,數據庫都是其不可或缺的重要組成部分,并且數據庫還很可能是單元測試的最大障礙。
連接到Dev或者UAT數據庫進行集成測試是不可靠的,因為任何人都可以更改數據和模式,比如表和存儲過程,這都會導致自動化集成測試的失敗。
DbUnit是JUnit的擴展,在每次集成測試之前它可以將數據庫初始化為已知狀態,從而確保數據庫包含正確的數據。
DbUnit是一個非常有用的工具,它可以幫助我們將測試數據和測試代碼分開。
▌Robot框架
Robot框架是一個基于Python的通用自動化測試框架,主要用于驗收測試以及驗收測試驅動開發。
它采用表格測試數據語法,是一個關鍵字驅動的測試框架。分布式異構應用程序的驗證往往需要多種技術和接口,非常適合用Robot來測試。
▌總結
以上就是本文介紹的所有針對 的單元測試以及集成測試的工具、框架和庫。
還有更多的庫并沒有包含在這個列表中,例如AssertJ和Hamcrest,它們可以幫助你寫出漂亮且流暢的測試程序。
面對如此多的工具,你應當先學習那些與你日常工作最相關的。例如,如果你的工作主要涉及JavaUI,那么你應該最先學習Selenium,然后再學習其他工具來擴展和提升自己。
類似的,如果你正在使用RESTAPI,那么最好先學習RESTAssured。如果你主要從事核心Java工作,那么你最先學習的應該是JUnit5。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習