常用的mock框架 mock框架做行為測試有什么弊端?
mock框架做行為測試有什么弊端?在單元測試中,我們經(jīng)常需要做一些模擬操作?,F(xiàn)在有一些很好的框架可以做這些事情,比如easymack,它在大多數(shù)情況下工作得很好,但是在一些結(jié)構(gòu)的設(shè)計(jì)上卻無能為力。Ea
mock框架做行為測試有什么弊端?
在單元測試中,我們經(jīng)常需要做一些模擬操作。現(xiàn)在有一些很好的框架可以做這些事情,比如easymack,它在大多數(shù)情況下工作得很好,但是在一些結(jié)構(gòu)的設(shè)計(jì)上卻無能為力。Easymock和其他許多模擬框架只能模擬一些公共的、非靜態(tài)的或final方法。在大多數(shù)情況下,這是沒有問題的。它可以處理大多數(shù)問題,但是當(dāng)測試代碼包含一些靜態(tài)方法時(shí)。Cactus是一個(gè)基于JUnit框架的簡單測試框架,用于對服務(wù)器Java代碼進(jìn)行單元測試。cactus框架的主要目標(biāo)是能夠在服務(wù)器端使用servlet對象對Java方法進(jìn)行單元測試,比如HttpServletRequest,它是單元測試的框架。例如,如果你編寫了一個(gè)程序,在進(jìn)行函數(shù)測試,即整體測試之前,你想知道它是對還是錯(cuò),你可以用這些工具編寫一個(gè)單元測試用例,分別測試這個(gè)類或程序的某個(gè)部分
~]@runwith(PowerMockRunner.class類)
@PrepareForTest(助手類)//1. 添加要初始化的類,它是構(gòu)造函數(shù)的類
public class helpertest{
@Mock
private Something mockSomething
@InjectMocks
private Helper Helper
@Test
public void doSomething()拋出異常{
String argument argPowerMockito.whenNew公司( 什么。班級). witharguments(參數(shù))。然后返回(mocksomething)//2。添加要構(gòu)造的函數(shù)的類、參數(shù)和返回值
//3。調(diào)用所需的測試方法3.劑量測定(參數(shù))
//verify
驗(yàn)證(mocksomething)。Doit()
}
]公共類幫助程序{
public void something(string ARG){
something something=New something(ARG)做點(diǎn)什么吧()
}
mock構(gòu)造方法?
因?yàn)閙ockito使用繼承來實(shí)現(xiàn)mock,所以使用cglib生成mock對象來執(zhí)行,而不是真正的對象。對于mock實(shí)例的方法,可以在子類中重寫,而靜態(tài)方法不能被子類重寫,因此mockito不能模擬靜態(tài)方法。但是powermock可以模擬靜態(tài)方法,因?yàn)樗苯釉谧止?jié)碼上工作,比如:importorg.powermock.api. mockito.PowerMockitoimportorg.powermock.core公司. classloader.annotations.PrepareForTestimportorg.powermock.modules模塊. testng.PowerMockTestCaseimport導(dǎo)入org.testng.Assertimportorg.testng.annotations注釋. 測試@PrepareForTest( 抽象動(dòng)物類)公共類AbstractAnimalTest擴(kuò)展了PowerMockTestCase{@Testpublic void shouldGetMockedHello(){PowerMockito.mockStatic文件( 抽象動(dòng)物類) 什么時(shí)候( 抽象動(dòng)物.getHello())。然后返回(“你好,模仿動(dòng)物世界?。┳址畣柡蛘Z=抽象動(dòng)物.getHello() Assert.assertTrue( 你好。平等(“你好,嘲笑動(dòng)物世界!“}
開發(fā)框架主要分為三個(gè)部分:前端、web和持久性,可以自由組合。我單獨(dú)談。
在過去,有struts 1、struts 2和spring MVC for java web framework。
目前,只有一個(gè)選擇:SpringMVC,其他人都不能玩。無論是玩耍、高格、火花還是Struts2。springmvc在用戶數(shù)量和生態(tài)方面與springmvc不一樣。
不管其他框架宣傳得多好,都不建議投入大量精力。學(xué)習(xí)框架的設(shè)計(jì)思路還可以。請直接在生產(chǎn)環(huán)境中使用springmvc。spring的基礎(chǔ)設(shè)施無法與其他框架相比。彈簧靴可用于快速開發(fā)。POM可以依賴于enable注釋直接使用。
目前,有兩種主流的JPA和mybatis。
如果項(xiàng)目是數(shù)據(jù)建模,請使用mybatis;如果項(xiàng)目是對象建模,請使用JPA。
春天來了。springboot的spring數(shù)據(jù)子項(xiàng)目應(yīng)該希望將兩者統(tǒng)一起來。不僅兩者,而且其野心更大。它希望統(tǒng)一所有持久性層。DB、redis和elastic search都有相應(yīng)的項(xiàng)目。它希望將所有持久性操作抽象為存儲庫操作。如果成功,業(yè)務(wù)邏輯就不需要關(guān)心持久層的選擇,交換框架也非常方便。
目前,前端框架有三個(gè)選項(xiàng):react、Ag和Vue。
我不喜歡react….的語法。。。。
似乎Ag在中國的知名度不高,所以我們不太關(guān)注。
最后的選擇是Vue,它簡單快速。支持的UI庫也比較完善。
如果您想在項(xiàng)目中開發(fā)小型程序,建議使用Vue。語法高度一致。你將一眼就知道如何開發(fā)小程序。