mock和擋板的區(qū)別 mock構(gòu)造方法?
mock構(gòu)造方法?@RunWith(PowerMockRunner.class類(lèi))@PrepareForTest(助手類(lèi))//1. 添加要初始化的類(lèi),即,構(gòu)造函數(shù)所在的類(lèi)public class he
mock構(gòu)造方法?
@RunWith(PowerMockRunner.class類(lèi))
@PrepareForTest(助手類(lèi))//1. 添加要初始化的類(lèi),即,構(gòu)造函數(shù)所在的類(lèi)
public class helpertest{
@mock
private something mocksomething
@injectmocks
private helper helper
@test
public void dosomething()拋出異常{
字符串參數(shù)=“arg”P(pán)owerMockito.whenNew公司( 什么。班級(jí)). witharguments(參數(shù))。然后返回(mocksomething)//2。添加要構(gòu)造的函數(shù)的類(lèi)、參數(shù)和返回值
//3。調(diào)用要測(cè)試的方法3.劑量測(cè)定(參數(shù))
//verify
驗(yàn)證(mocksomething)。Doit()
}
]公共類(lèi)幫助程序{
public void something(string ARG){
]something something=new something(ARG)做點(diǎn)什么吧()
}
如何mock靜態(tài)方法?
因?yàn)閙ockito使用繼承來(lái)實(shí)現(xiàn)mock,所以使用cglib生成mock對(duì)象來(lái)執(zhí)行,而不是真正的對(duì)象。對(duì)于mock實(shí)例的方法,可以在子類(lèi)中重寫(xiě),而靜態(tài)方法不能被子類(lèi)重寫(xiě),因此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注釋. 測(cè)試@PrepareForTest( 抽象動(dòng)物類(lèi))公共類(lèi)AbstractAnimalTest擴(kuò)展了PowerMockTestCase{@Testpublic void shouldGetMockedHello(){PowerMockito.mockStatic文件( 抽象動(dòng)物類(lèi)) 什么時(shí)候( 抽象動(dòng)物.getHello())。然后返回(“你好,模仿動(dòng)物世界?。┳址畣?wèn)候語(yǔ)=抽象動(dòng)物.getHello() Assert.assertTrue( 你好。平等(“你好,嘲笑動(dòng)物世界!"))}}