10個Java開發(fā)人員的測試工具、庫和框架介紹
介紹10個出色的測試框架,工具和庫,以提高您的自動化測試技能。
最近,我寫了一些關(guān)于Java開發(fā)人員今年應(yīng)該學(xué)習(xí)什么的文章,但如果你只有一件事需要改進或?qū)W習(xí),那么那必須是你的自動化測試技能。
測試是將專業(yè)開發(fā)人員與業(yè)余開發(fā)人員分開的學(xué)科之一。它不是關(guān)注TDD,BDD或任何測試方法,但在***級別,您必須編寫代碼來自動測試代碼。
許多Java開發(fā)人員編寫在構(gòu)建期間自動運行的 和集成測試,主要是使用 或TeamCity 等持續(xù)集成工具。
如果你們中的一些人想知道為什么程序員應(yīng)該專注于自動化測試,那么讓我告訴你,由于更多的意識和DevOps的出現(xiàn),自動化測試的重要性呈指數(shù)級增長。
公司通常更喜歡擅長編寫單元測試并且熟悉各種單元測試框架,庫和工具的程序員,例如 , ,REST-Assured, 等。
作為Java開發(fā)人員,我們處理非常不同的領(lǐng)域,從編寫核心Java代碼到創(chuàng)建JSP頁面,編寫 ,有時甚至創(chuàng)建用于構(gòu)建自動化的Groovy腳本。這就是為什么我們還需要了解我們可以用來自動化測試的不同工具。
例如,我只知道JUnit很長一段時間,但是當我不得不測試我的JSP頁面時,在找到Selenium之前我一無所知。REST Assured也是如此,因為我通常使用 測試我的REST API ,但REST Assured將REST API的單元測試提升到另一個級別。
10個適用于Java程序員的有用單元和集成測試工具
由于我相信程序員和他們的工具一樣好,我總是在空閑時間嘗試學(xué)習(xí)和探索新的工具和庫,這個列表是該研究的一部分。
在本文中,我將分享10個***的和必不可少的 , 和庫,它們可以幫助Java開發(fā)人員在各種Java項目上編寫單元測試和集成測試。
1. JUnit
我不認為JUnit需要任何介紹。即使您是初學(xué)Java程序員,您也可能聽說過它。它允許您為Java代碼編寫單元測試。
幾乎所有主要的IDE(例如 , 和 )都提供JUnit集成,這意味著您可以直接從這些IDE編寫和運行單元測試。
我們大多數(shù)人仍在使用JUnit 4,但JUnit 5已經(jīng)發(fā)布,可能是今年要看的下一個東西。您可以將JUnit用于單元測試和集成測試,它還支持Java 8功能。
2. REST Assured
在Java中測試和驗證REST服務(wù)比在 等動態(tài)語言中更難。
REST Assured將使用這些語言的簡單性帶入了Java域。它是REST API集成測試的***工具。
3. Selenium
Selenium可能是***的Java UI測試工具,它允許您測試 而無需在瀏覽器中啟動它們。
您可以使用JUnit和Selenium測試Web應(yīng)用程序UI。它甚至允許您編寫Web應(yīng)用程序驗收測試。
4. TestNG
TestNG是一個受JUnit和NUnit啟發(fā)的測試框架,但引入了許多新功能,使其功能更強大,更易于使用,例如 ,在任意大線程池中運行測試,并提供各種策略(所有方法都在自己的線程中,一個每個測試類的線程等)。
由于使用了JUnit 4中的注釋并集成了Hamcrest匹配器,JUnit和TestNG之間的差距已經(jīng)縮小,但這取決于您。
5.Mockito
Java類有許多模擬框架,例如PowerMock和JMock,但我個人喜歡 的簡單API,很棒的文檔和很多例子。
模擬是現(xiàn)代單元測試的基本技術(shù)之一,因為它允許您在沒有任何依賴性的情況下單獨測試代碼,這就是為什么我鼓勵每個Java開發(fā)人員與 一起學(xué)習(xí)模擬框架。
我最喜歡的模擬框架是Mockito,但如果你愿意,你也可以探索PowerMock或JMock。
6. Spock框架
Spock是 和 應(yīng)用程序的另一個測試和規(guī)范框架。它是用Groovy編寫的,這使它成為一種非常富有表現(xiàn)力和規(guī)范的規(guī)范語言。
當您使用Spock時,您的測試將變得更易讀并且更易于維護,并且由于其JUnit運行程序,Spock與大多數(shù)IDE,構(gòu)建工具和持續(xù)集成服務(wù)器兼容。
7. Cucumber
Cucumber是自動化集成測試的另一個很好的工具,但是它與同類別中的其他工具的不同之處在于它的規(guī)范功能。
Cucumber將規(guī)范和測試文檔合并為一個統(tǒng)一的整體生活文檔,由于它們將由Cucumber自動測試,因此您的規(guī)范始終是***的。
8. Spring Test
Spring MVC帶有一個非常有用的測試框架,允許在不涉及 情況下進行深入測試。
它是向Spring應(yīng)用程序編寫自動化測試的最有用的庫之一。它為Spring驅(qū)動的應(yīng)用程序(包括 編寫單元和集成測試提供了***的支持。
還有一個Spring Test DbUnit將Spring Test框架與DbUnit和Spring Test MVC HtmlUnit集成在一起,它將Spring Test MVC框架與HtmlUnit集成在一起。
通過使用這些工具,您可以輕松地以自動方式測試 。
9. DBUnit
數(shù)據(jù)庫是許多Java應(yīng)用程序(核心Java和Web應(yīng)用程序)不可或缺的一部分,可能是進行單元測試時的***障礙。
連接到Dev或UAT數(shù)據(jù)庫進行集成測試是不可靠的,因為任何人都可以更改數(shù)據(jù)和模式,例如表和 ,這將導(dǎo)致自動集成測試失敗。
DbUnit是一個JUnit擴展,可用于在每次集成測試之前將數(shù)據(jù)庫初始化為已知狀態(tài),以確保數(shù)據(jù)庫包含正確的數(shù)據(jù)。
DbUnit有自己的問題,但它是一個非常有用的工具,因為它可以幫助我們將測試數(shù)據(jù)創(chuàng)建與測試代碼分開。
10. Robot框架
Robot Framework是一個基于 的通用測試自動化框架,用于驗收測試和驗收測試驅(qū)動開發(fā)。
它是一個關(guān)鍵字驅(qū)動的測試框架,使用表格測試數(shù)據(jù)語法。您可以使用它來測試分布式異構(gòu)應(yīng)用程序,其中驗證需要涉及多種技術(shù)和接口。
結(jié)論
這就是Java開發(fā)人員的一些基本單元測試和集成測試工具,框架和庫的全部內(nèi)容。
我還沒有列入更多的庫,例如AssertJ和Hamcrest,它們可以幫助你編寫漂亮和流暢的測試 - 但是要慢慢來。
首先,學(xué)習(xí)一種可以在日常工作中使用的工具或庫。例如,如果您正在使用Java UI,那么您應(yīng)該首先學(xué)習(xí)Selenium,因為那樣您可以更多地關(guān)注這個工具。