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