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

首頁 > 學院 > 開發設計 > 正文

JMockit的常用注解

2019-11-11 06:53:14
字體:
來源:轉載
供稿:網友

JMockit的常用注解

1. @Tested

用于標識一個被測對象的實例,只能作用于具體類,而不能作用于接口,因為一個接口可能有多個實現類,被測試的只能是實現該接口的某一個具體的類通過@Tested標簽標識的被測對象實例,將會在測試方法執行之前被JMockit初始化。可通過@Injectable注解對被測對象的構造函數進行改寫。如果沒有@Injectable,則采用原有代碼進行初始化。被@Tested注解的對象,其域對象將自動被@Injectable注解生成的對象進行初始化如果@Tested的fullyInitialized=true,則被測對象的所有參數都需要被初始化。

2. @Injectable

標識只有一個指定的被測對象的內部變量被mock,其他和被mock實例采用相同對象的實例不受影響。被@Tested注解的對象,其域對象將自動被@Injectable注解生成的對象進行初始化

3. @Mocked

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

4. @Capturing

標識一個被Mock的類及其子類均被Mock。可以通過maxInstances方法來限定最大有多少層子類也被mock

舉個栗子(代碼片段):

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;//返回數量 }}

DemoServiceImplAutowireTest:

import mockit.*;import mockit.integration.junit4.JMockit;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;/** * Autowired對象 Mock測試 */@RunWith(JMockit.class)public class DemoServiceImplAutowireTest { /** * 被測試的對象,只能是具體類,而不能是接口,因為一個接口可能有多個實現類 * 所有帶有@Injectable的實例均被自動注入該實例中 */ @Tested private DemoServiceImpl noteService; /** * 自動注入到noteService中,只有一個StockDao的特定實例stockDao被MOCK掉 */ @Injectable private StockDao stockDao; @Test public void test() { // 1. record 錄制期望值 new Expectations() { { stockDao.queryStock(anyInt);// mock這個方法,無論傳入任何Int類型的值,都返回同樣的值,達到黑盒的效果 result = 50; times = 1; } }; // 2. replay 調用 Assert.assertEquals(50 - 10, noteService.updateCount(1, 10)); //驗證結果 //3.校驗是否只調用了一次。 new Verifications() { { stockDao.queryStock(anyInt); times = 1; } }; }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沭阳县| 洪湖市| 彭州市| 蓬莱市| 乌审旗| 和龙市| 城步| 金乡县| 沅江市| 延寿县| 花莲县| 攀枝花市| 兰西县| 老河口市| 盐山县| 三门县| 金乡县| 樟树市| 正镶白旗| 新建县| 永济市| 武威市| 美姑县| 鹤壁市| 苏州市| 乌拉特前旗| 云龙县| 莱芜市| 原平市| 呼和浩特市| 商城县| 揭西县| 凤山市| 三穗县| 潞城市| 宣城市| 伊金霍洛旗| 刚察县| 深水埗区| 来凤县| 灯塔市|