java mockito是什么,讓我們一起了解一下?
Mockito是一個(gè)強(qiáng)大的用于Java開發(fā)的模擬測試框架,通過Mockito可以創(chuàng)建和配置Mock對象,進(jìn)而簡化有外部依賴的類的測試。就是創(chuàng)建外部依賴的Mock對象,然后將此Mock對象注入到測試類中。
使用Mock的好處是什么?
1、可以提前創(chuàng)建測試TDD。
這一個(gè)是更強(qiáng)大的好處之一。 如果您創(chuàng)建一個(gè)模擬器,您可以在服務(wù)創(chuàng)建之前編寫服務(wù)測試,使您能夠在開發(fā)過程中將測試添加到自動化環(huán)境中。 換句話說,Service Mocking可以讓您使用測試驅(qū)動開發(fā)。
2、團(tuán)隊(duì)可以并行工作。
這與上述類似 為不存在的代碼創(chuàng)建測試。 但是以前的一點(diǎn)是針對開發(fā)人員編寫測試,這是針對測試團(tuán)隊(duì)的。 當(dāng)您沒有任何測試時(shí),團(tuán)隊(duì)如何開始創(chuàng)建測試? 模擬它,并對模擬器進(jìn)行測試! 這意味著當(dāng)服務(wù)準(zhǔn)備好進(jìn)行測試時(shí),QA團(tuán)隊(duì)實(shí)際上可以準(zhǔn)備一整套測試; 我們沒有停機(jī)的時(shí)候,一個(gè)隊(duì)伍等待另一個(gè)完成。 這使得嘲弄的財(cái)務(wù)論據(jù)特別強(qiáng)。
3、可以創(chuàng)建概念或演示的證明。
由于Mocks可以(成本最高)能夠?qū)崿F(xiàn)成本效益,因此可以使用Mocks來創(chuàng)建概念證明,線框架,或作為您正在考慮構(gòu)建的應(yīng)用程序的演示。 這是非常強(qiáng)大的,為決定是否繼續(xù)開發(fā)項(xiàng)目做出決定,但最重要的是為實(shí)際設(shè)計(jì)決策提供了良好的基礎(chǔ)。
4、可以編寫測試資源不可訪問。
這是不屬于實(shí)際利益類別的好處之一,而是作為救生員。 曾經(jīng)想要測試或使用服務(wù),只是被告知該服務(wù)是在防火墻后面,那個(gè)防火墻無法為您打開,或者您被授權(quán)使用該防火墻? 當(dāng)你這樣做時(shí),一個(gè)MockService放置在可訪問的地方,包括在你本地的電腦上,是一個(gè)救命的人。
5、模擬器可以交付給客戶。
有些情況下,您無法允許訪問外部來源的測試系統(tǒng)(如合作伙伴或客戶)的原因。 這些原因可以是訪問安全性,信息敏感性,或只是測試環(huán)境可能無法24/7訪問的事實(shí)。 在這些情況下 您如何為您的合作伙伴或客戶提供測試系統(tǒng)以開始開發(fā)或測試? 一個(gè)簡單的解決方案是從您的網(wǎng)絡(luò)或客戶自己的網(wǎng)絡(luò)提供一個(gè)模擬。 soapUI模擬是非常容易部署的,它可以在soapUI中運(yùn)行,也可以作為.WAR文件導(dǎo)出,并放置在您選擇的Java服務(wù)器中。
6、可以隔離系統(tǒng)。
有時(shí)您想測試系統(tǒng)的一部分,而不會影響其他系統(tǒng)部件。 這是因?yàn)槠渌到y(tǒng)會對測試數(shù)據(jù)增加噪音,使得從收集的數(shù)據(jù)中得出更好的結(jié)論更加困難。 使用mocks,您可以刪除所有的系統(tǒng),嘲笑所有系統(tǒng),除了您在測試中需要確定的一個(gè)系統(tǒng)。 當(dāng)進(jìn)行嘲諷隔離時(shí),這些嘲弄可以做得非常簡單但可靠,快速,可預(yù)測。 這給您一個(gè)測試環(huán)境,您已經(jīng)刪除了所有隨機(jī)行為,具有可重復(fù)的模式,并可以很好地監(jiān)控特定系統(tǒng)。
示例代碼如下:
package?info.sanaulla.models; import?java.util.List; /** *?Model?class?for?the?book?details. */ public?class?Book?{ private?String?isbn; private?String?title; private?List?authors; private?String?publication; private?Integer?yearOfPublication; private?Integer?numberOfPages; private?String?image; public?Book(String?isbn, String?title, List?authors, String?publication, Integer?yearOfPublication, Integer?numberOfPages, String?image){ this.isbn?=?isbn; this.title?=?title; this.authors?=?authors; this.publication?=?publication; this.yearOfPublication?=?yearOfPublication; this.numberOfPages?=?numberOfPages; this.image?=?image; } public?String?getIsbn()?{ return?isbn; } public?String?getTitle()?{ return?title; } public?List?getAuthors()?{ return?authors; } public?String?getPublication()?{ return?publication; } public?Integer?getYearOfPublication()?{ return?yearOfPublication; } public?Integer?getNumberOfPages()?{ return?numberOfPages; } public?String?getImage()?{ return?image; } }
以上就是小編今天的分享了,希望可以幫助到大家。