国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

JMockit的常用注解

2019-11-11 05:27:47
字體:
供稿:網(wǎng)友

JMockit的常用注解

1. @Tested

用于標(biāo)識(shí)一個(gè)被測對(duì)象的實(shí)例,只能作用于具體類,而不能作用于接口,因?yàn)橐粋€(gè)接口可能有多個(gè)實(shí)現(xiàn)類,被測試的只能是實(shí)現(xiàn)該接口的某一個(gè)具體的類通過@Tested標(biāo)簽標(biāo)識(shí)的被測對(duì)象實(shí)例,將會(huì)在測試方法執(zhí)行之前被JMockit初始化。可通過@Injectable注解對(duì)被測對(duì)象的構(gòu)造函數(shù)進(jìn)行改寫。如果沒有@Injectable,則采用原有代碼進(jìn)行初始化。被@Tested注解的對(duì)象,其域?qū)ο髮⒆詣?dòng)被@Injectable注解生成的對(duì)象進(jìn)行初始化如果@Tested的fullyInitialized=true,則被測對(duì)象的所有參數(shù)都需要被初始化。

2. @Injectable

標(biāo)識(shí)只有一個(gè)指定的被測對(duì)象的內(nèi)部變量被mock,其他和被mock實(shí)例采用相同對(duì)象的實(shí)例不受影響。被@Tested注解的對(duì)象,其域?qū)ο髮⒆詣?dòng)被@Injectable注解生成的對(duì)象進(jìn)行初始化

3. @Mocked

用于全局變量或方法的參數(shù),標(biāo)識(shí)一個(gè)指定的class的實(shí)例或被測對(duì)象的參數(shù)被Mock掉。JMockit根據(jù)Expectation方法中的設(shè)置來初始化被Mock對(duì)象的值。所有對(duì)象(基本類型和Array除外)都可以通過@Mocked標(biāo)識(shí)被Mock掉。當(dāng)一個(gè)被測對(duì)象的參數(shù)被Mock的時(shí)候,執(zhí)行測試時(shí),該參數(shù)將不再按照原有的代碼來實(shí)例化,而是將實(shí)例化的工作委托給JMockit來完成。被Mock的對(duì)象的除了繼承自O(shè)bject的方法之外的所有方法(包括構(gòu)造函數(shù)、靜態(tài)函數(shù)等)都會(huì)被JMockit重寫。

4. @Capturing

標(biāo)識(shí)一個(gè)被Mock的類及其子類均被Mock。可以通過maxInstances方法來限定最大有多少層子類也被mock

舉個(gè)栗子(代碼片段):

DemoServiceImpl:

import org.sPRingframework.beans.factory.annotation.Autowired;public class DemoServiceImpl implements DemoService { @Autowired private DemoDao demoDao; @Autowired private StockDao stockDao; /** * 更新庫存 * * @return */ public int updateCount(int id, int count) { //...... UPDATE Database return stockDao.queryStock(id) - count;//返回?cái)?shù)量 }}

DemoServiceImplAutowireTest:

import mockit.*;import mockit.integration.junit4.JMockit;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;/** * Autowired對(duì)象 Mock測試 */@RunWith(JMockit.class)public class DemoServiceImplAutowireTest { /** * 被測試的對(duì)象,只能是具體類,而不能是接口,因?yàn)橐粋€(gè)接口可能有多個(gè)實(shí)現(xiàn)類 * 所有帶有@Injectable的實(shí)例均被自動(dòng)注入該實(shí)例中 */ @Tested private DemoServiceImpl noteService; /** * 自動(dòng)注入到noteService中,只有一個(gè)StockDao的特定實(shí)例stockDao被MOCK掉 */ @Injectable private StockDao stockDao; @Test public void test() { // 1. record 錄制期望值 new Expectations() { { stockDao.queryStock(anyInt);// mock這個(gè)方法,無論傳入任何Int類型的值,都返回同樣的值,達(dá)到黑盒的效果 result = 50; times = 1; } }; // 2. replay 調(diào)用 Assert.assertEquals(50 - 10, noteService.updateCount(1, 10)); //驗(yàn)證結(jié)果 //3.校驗(yàn)是否只調(diào)用了一次。 new Verifications() { { stockDao.queryStock(anyInt); times = 1; } }; }}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘洛县| 重庆市| 徐闻县| 安仁县| 阿克陶县| 旬邑县| 定襄县| 耒阳市| 三亚市| 江都市| 高要市| 营山县| 读书| 巴林左旗| 屯门区| 措勤县| 上杭县| 和平区| 玛多县| 镇沅| 涿州市| 林州市| 当涂县| 田林县| 兴海县| 乌苏市| 沽源县| 察隅县| 安吉县| 石景山区| 武强县| 泗洪县| 宜州市| 九寨沟县| 广丰县| 宁德市| 南皮县| 吴江市| 三台县| 武平县| 刚察县|