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