中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站首頁(yè)優(yōu)化營(yíng)銷型網(wǎng)站外包

網(wǎng)站首頁(yè)優(yōu)化,營(yíng)銷型網(wǎng)站外包,深圳做公司網(wǎng)站推廣的,hao123我的主頁(yè)Jmockit使用筆記_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 靜態(tài)變量直接賦值就好,沒(méi)必要mock了 測(cè)試框架Jmockit集合junit使用 RunWith(JMockit.class) 寫在測(cè)試案例類上的注解 Tested 在測(cè)試案例中,寫在我們要測(cè)試的類上…

Jmockit使用筆記_基本功能使用@Tested_@Injectable_@Mocked_Expectations_jmockit.class-CSDN博客

靜態(tài)變量直接賦值就好,沒(méi)必要mock了?

測(cè)試框架Jmockit集合junit使用

@RunWith(JMockit.class)

在測(cè)試案例類上的注解

@Tested

在測(cè)試案例中,寫在我們要測(cè)試的類上面, 一般用實(shí)現(xiàn)類

@Injectable

在測(cè)試案例中聲明那些我們要測(cè)試的類中通過(guò)@Autowired注入的類
? ? ? ? ? ? ? ? ? ? ? ??
原文鏈接:https://blog.csdn.net/Java_XiaoBei/article/details/126150129

/*** @author: xinruoxiangyang9010* 測(cè)試案例*/
@RunWith(JMockit.class)
public class MyServicemplTest {@Injectableprivate MyMapper myMapper;@Testedprivate MyServicempl myServicempl;@Testpublic void testMethod() {String result = myServicempl.testMethod();assertEquals("myService", result);}
}

2. 必須加 @RunWith(JMockit.class) 的情況

  • 使用 JUnit 4
    如果你的項(xiàng)目是基于 JUnit 4 的測(cè)試框架,而測(cè)試類中使用了 JMockit 提供的注解(如 @Mocked、@Injectable)或 API(如 Expectations、Verifications),則必須加上 @RunWith(JMockit.class)。
    原因
    JUnit 4 默認(rèn)使用 BlockJUnit4ClassRunner 運(yùn)行器,而 JMockit 的特性需要通過(guò) JMockitTestRunner 擴(kuò)展運(yùn)行器支持。如果不加 @RunWith(JMockit.class),JMockit 的增強(qiáng)功能不會(huì)生效。

測(cè)試類中不使用 JMockit 特性
如果你的測(cè)試沒(méi)有使用 JMockit 的 @Mocked、@Injectable、@Tested 或其他功能,只是普通的單元測(cè)試,則可以不加 @RunWith(JMockit.class)。?

Expectations:返回他的result?

在 JMockit 的 Expectations 中,如果沒(méi)有為方法設(shè)置返回值(result),或?qū)?result 設(shè)置為 null,則會(huì)根據(jù)方法的簽名返回以下內(nèi)容:


1. 沒(méi)有指定 result 的情況

new Expectations(MyStringUtil.class) {{MyStringUtil.getUUID(); // 沒(méi)有設(shè)置 result
}};
String resultString = MyStringUtil.getUUID();
assertEquals(null, resultString); // 返回 null

  • 如果沒(méi)有顯式設(shè)置 result默認(rèn)行為是方法返回類型的默認(rèn)值
    • 基本類型(如 int、double):返回其默認(rèn)值(00.0)。
    • 對(duì)象類型:返回 null。
    • void 方法:不會(huì)有返回值。

------------------

  • 如果是void 方法不能設(shè)置 result 值,因?yàn)樗环祷厝魏蝺?nèi)容。
  • 如果你嘗試為 void 方法設(shè)置 result,JMockit 會(huì)拋出異常。java.lang.IllegalArgumentException: Attempted to specify a result for a void method.
  • 對(duì)于 void 方法,你可以使用 Verifications 來(lái)驗(yàn)證方法的調(diào)用行為。
@Test
public void voidMethodTest() {new Expectations() {{// 模擬任何期望,但不設(shè)置返回值MyStringUtil.doSomething();}};// 調(diào)用 void 方法MyStringUtil.doSomething();// 驗(yàn)證 void 方法是否被調(diào)用new Verifications() {{MyStringUtil.doSomething();  // 驗(yàn)證是否調(diào)用times = 1;  // 驗(yàn)證調(diào)用次數(shù)}};
}

這段代碼就是檢查doSomething()是否調(diào)用了1次,times=2就是檢查是否用了兩次

下面這段代碼太好了:

結(jié)合Expectations的使用對(duì)@Mocked與@Injectable的不同

/*** @author: xinruoxiangyang9010* 測(cè)試案例*/
@RunWith(JMockit.class)
public class MockAndInjectTest {@Testpublic void testMock(@Mocked DiffServiceImpl diffService) {new Expectations() {{diffService.method();result = "mockMethod";}};assertEquals("mockMethod", diffService.method());// @Mocked修飾的變量,即便是再new出來(lái)的,也會(huì)按照上面我們mock的結(jié)果返回assertEquals("mockMethod", new DiffServiceImpl().method());}@Testpublic void testInjectable (@Injectable DiffServiceImpl diffService) {new Expectations() {{diffService.method();result = "mockMethod";}};assertEquals("mockMethod", diffService.method());// 注意這里結(jié)果的不同, 在對(duì)@Injectable修飾的對(duì)象進(jìn)行Expectations指定結(jié)果時(shí)// 受影響的只是被修飾的對(duì)象,如果我們new一個(gè)示例出來(lái),是不會(huì)受Expectations影響的assertEquals("real", new DiffServiceImpl().method());}
}

這里寫的也很好?

JMockit單元測(cè)試詳解-CSDN博客

基本流程

record(錄制)---- replay(回放) ---- verify(驗(yàn)證)

record : 設(shè)置將要被調(diào)用的方法和返回值。

  • Expections中的方法至少被調(diào)用一次,否則會(huì)出現(xiàn)missing invocation錯(cuò)誤。調(diào)用次數(shù)和調(diào)用順序不限。
  • StrictExpectations中方法調(diào)用的次數(shù)和順序都必須嚴(yán)格執(zhí)行。如果出現(xiàn)了在StrictExpectations中沒(méi)有聲明的方法,會(huì)出現(xiàn)unexpected invocation錯(cuò)誤。

replay:調(diào)用(未被)錄制的方法,被錄制的方法調(diào)用會(huì)被JMockit攔截并重定向到record階段設(shè)定的行為。

verify:基于行為的驗(yàn)證,測(cè)試CUT是否正確調(diào)用了依賴類,包括:調(diào)用了哪些方法;通過(guò)怎樣的參數(shù);調(diào)用了多少次;調(diào)用的相對(duì)順序(VerificationsInOrder)等??梢允褂胻imes,minTimes,maxTimes來(lái)驗(yàn)證。

?

RunWith(JMockit.class): 指定單元測(cè)試的執(zhí)行類為JMockit.class。
Tested: 指定被測(cè)試類,同時(shí)mock實(shí)例并注入測(cè)試類;依賴的類使用Injectable注入。
Injectable: 將對(duì)象進(jìn)行mock并注入測(cè)試類。
Mocked:mock一種類型,并注入測(cè)試類。

Mocked與Injectable區(qū)別:

  • Mocked 注入的依賴,類的所有實(shí)例都被mock,record的方法,在replay時(shí),按照record的結(jié)果返回;沒(méi)有record的方法返回默認(rèn)值。
  • Injectable 注入的依賴,只mock指定的實(shí)例,record的方法,在replay時(shí),按照record的結(jié)果返回;沒(méi)有record的方法返回默認(rèn)值。沒(méi)有mock的實(shí)例,調(diào)用其原始方法。

?

http://www.risenshineclean.com/news/2882.html

相關(guān)文章:

  • 哈爾濱 房產(chǎn)網(wǎng)站建設(shè)成都seo專家
  • 軟件公司 網(wǎng)站模板網(wǎng)站外鏈平臺(tái)
  • 自己黑自己做的網(wǎng)站找相似圖片 識(shí)別
  • 石家莊網(wǎng)站建設(shè)找哪家百度推廣關(guān)鍵詞規(guī)劃師
  • 提供網(wǎng)站制作公司地址常用的關(guān)鍵詞挖掘工具
  • 舟山做網(wǎng)站seo關(guān)鍵詞排名優(yōu)化品牌
  • 網(wǎng)站 建設(shè) 標(biāo)準(zhǔn)方案網(wǎng)站平臺(tái)都有哪些
  • 網(wǎng)站橫幅js代碼如何策劃一個(gè)營(yíng)銷方案
  • 做網(wǎng)站群發(fā)外鏈平臺(tái)
  • 濟(jì)南專業(yè)做網(wǎng)站的公司哪家好信息流優(yōu)化師證書(shū)
  • 怎么用flash做網(wǎng)站網(wǎng)絡(luò)營(yíng)銷手段有哪些方式
  • 網(wǎng)站設(shè)計(jì)方法制作公司網(wǎng)站的公司
  • 做網(wǎng)站的哪里好站長(zhǎng)工具seo綜合查詢columbu cat
  • 推廣做任務(wù) 有哪些網(wǎng)站南寧網(wǎng)站推廣營(yíng)銷
  • 自己編輯網(wǎng)站怎么做的域名備案
  • 網(wǎng)站群建設(shè)目標(biāo)網(wǎng)絡(luò)營(yíng)銷經(jīng)典案例
  • php可以做視頻網(wǎng)站如何做好網(wǎng)絡(luò)營(yíng)銷工作
  • 數(shù)據(jù)庫(kù)網(wǎng)站開(kāi)發(fā)外文翻譯競(jìng)價(jià)托管代運(yùn)營(yíng)
  • 做網(wǎng)站需要租服務(wù)器嗎線上推廣平臺(tái)都有哪些
  • 自己做的網(wǎng)站怎么綁域名杭州seo網(wǎng)絡(luò)公司
  • 陵縣網(wǎng)站建設(shè)如何免費(fèi)注冊(cè)網(wǎng)站
  • 網(wǎng)站開(kāi)發(fā)后端是什么免費(fèi)刷網(wǎng)站百度關(guān)鍵詞
  • 校史網(wǎng)站開(kāi)發(fā)技術(shù)百度一下手機(jī)版首頁(yè)
  • wordpress建站數(shù)據(jù)庫(kù)軟文范例大全100
  • 動(dòng)漫做h在線觀看網(wǎng)站百度一下官方網(wǎng)頁(yè)
  • 國(guó)家示范校建設(shè)成果網(wǎng)站百度快照排名
  • 網(wǎng)站建設(shè)專用圖形庫(kù)seo網(wǎng)站內(nèi)容優(yōu)化有哪些
  • 虛擬空間官網(wǎng)衡陽(yáng)有實(shí)力seo優(yōu)化
  • 睢寧網(wǎng)站建設(shè)xzqjwl深圳推廣公司有哪些
  • 網(wǎng)站開(kāi)發(fā)開(kāi)題報(bào)告怎樣推廣一個(gè)產(chǎn)品