锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲综合色丁香婷婷六月图片 ,亚洲国产美女视频,久久综合亚洲色HEZYO社区 http://www.tkk7.com/lihao336/category/41306.html鎴愪簬鍧氬繊錛屾瘉浜庢誕韜?/description>zh-cnSat, 30 Oct 2010 06:00:56 GMTSat, 30 Oct 2010 06:00:56 GMT60mockobjecthttp://www.tkk7.com/lihao336/articles/291353.htmlcalvincalvinSun, 16 Aug 2009 08:16:00 GMThttp://www.tkk7.com/lihao336/articles/291353.htmlhttp://www.tkk7.com/lihao336/comments/291353.htmlhttp://www.tkk7.com/lihao336/articles/291353.html#Feedback0http://www.tkk7.com/lihao336/comments/commentRss/291353.htmlhttp://www.tkk7.com/lihao336/services/trackbacks/291353.html璁よ瘑Mock Object
Tag錛?a >鎶鏈墠娌?/a>

鐗堟潈澹版槑錛氳漿杞芥椂璇蜂互瓚呴摼鎺ュ艦寮忔爣鏄庢枃绔犲師濮嬪嚭澶勫拰浣滆呬俊鎭強鏈0鏄?/a>
http://bigwhite.blogbus.com/logs/535124.html

 

涓婂懆鍏垜浠?/span>Dominoo group璁ㄨ錛堜互涓嬬О璁ㄨ錛?/span>TDD鍜?/span>JUnit鐨勬椂鍊欙紝鎻愬埌榪?/span>Mock Object錛岄偅嬈″彲鑳芥槸鎴戠涓嬈″惉鍒?/span>Mock Object榪欎釜姒傚康錛岀▼搴忓憳瀵規柊椴滅殑鐨勪笢瑗塊兘鏄晱鎰熺殑錛屾墍浠ヤ粖澶╂櫄涓婅姳浜嗕竴浜涙椂闂翠簡瑙d簡涓涓?/span>Mock Object鐨勬蹇碉紝鍋氫簡涓浜涚畝鍗曞疄璺點?/span>

 

鏈

Tested Object – 琚祴瀵硅薄

Mock – 鍋囩殑 or 浠垮埗鐨勫璞?/span>

 

What is Mock Object?

鍦ㄨ璁轟腑鎴戝ぇ鑷翠簡瑙e埌Mock Object涓鑸槸鐢ㄦ潵鍋氳緟鍔╁崟鍏冩祴璇曪紝瀹冭礋璐i殧紱?/span>Tested Object涓庣湡瀹炵幆澧冧腑妯″潡鎴栧疄浣?/span>(Real world object)鐨勪氦浜掞紝騫?#8220;鏇夸唬”or “鍐掑厖榪欎簺鐪熷疄妯″潡鎴栧疄浣撲笌Tested Object榪涜浜や簰銆?/span>

鍦?#8220;JUnit in action”榪欐湰涔︿腑鍏充簬Mock Object鐨勬弿榪板涓嬶細

A mock object (or mock for short) is an object created to stand in for an object that your code will be collaborating with. Your code can call methods on the mock object, which will deliver results as set up by your tests.

 

Mock Object緇欐垜甯︽潵浠涔堝ソ澶勶紵

 

鐪嬬湅涓嬮潰鐨勫浘錛?/span>

|-----------------------------------------------------------------|

|                                                                                         |                   

|      |---------------------|                                                  |             |-----------------------------|

|      |   Tested             | <------------------------------------------à | External Mock Object |

|      |      Object            |                                                    |            |----------------------------|

|      |---------------------|                                                 |

|                   /|\               |--------------------|                       |

|                    |-------銆?|  Internal Mock    |                       |

|                                     |     Object           |                       |

|                                     |--------------------|                    |

|      [Your system scope]                                                  |

|--------------------------------------------------------- --------|

 

鍦ㄦ祴璇曚綘鐨?/span>Tested Object鏃訛紝浣犲彲鑳戒細涓庝綘緋葷粺鍐呯殑鏌愪釜妯″潡鎴栫郴緇熷鏌愪釜瀹炰綋浜や簰錛岃岃繖浜涙ā鍧楁垨瀹炰綋鍦ㄤ綘鍋氬崟鍏冩祴璇曠殑鏃跺欏彲鑳藉茍涓嶅瓨鍦紝榪欐椂錛?/span>

Ø         Internal Mock Object鍙兘鏄竴涓綘鐨勭郴緇熷皻鏈畬鎴愮殑妯″潡鐨?#8220;鏇胯韓”(replacement)錛?/span>

Ø         External Mock Object鍙兘鏄祴璇曚綘鐨?/span>Tested Object鏃墮渶瑕佺殑澶栭儴鐨勭幆澧冨疄浣撶殑“鏇胯韓”錛?/span>replacement錛夈?/span>

涓嶇煡閬撹繖鏍風粰Mock Object鍒嗙被鏄惁姝g‘J

 

鎴戜滑鏉ョ湅鐪嬩笌Real world object浜や簰鏈変粈涔堜笉瓚充箣澶勶細

Ø         Real world object鐨勮涓哄叿鏈変笉紜畾鎬э紝鎴戜滑闅句簬鎺у埗瀹冧滑鐨勮緭鍑?/span>or榪斿洖緇撴灉銆?/span>

Ø         Real world object鏈変簺鏃跺欐槸闅句簬琚緩绔嬬殑鎴栬呰鏄棤娉曡幏寰楃殑銆?/span>

Ø         Real world object鐨勬湁浜涜涓洪毦浜庤瑙﹀彂錛屽紓佺洏宸叉弧錛岀綉緇?/span>error絳夈?/span>

Ø         Real world object鍙兘涓嶅瓨鍦紝姣斿浣犵殑Tested Object闇瑕佷笌浣犵殑緋葷粺鐨勫彟涓涓?/span>module浜や簰錛岃屽彟涓涓?/span>module灝氭湭寮鍙戝畬姣曘?/span>

 

褰撶劧榪樹笉姝㈣繖浜涳紝鎴戜滑浠呬粎鏄垪鍑轟竴閮ㄥ垎銆?/span>

 

浣跨敤Mock Object鏇夸唬Real world object鍚庢垜浠氨浼氳В鍐充笂榪伴棶棰橈紝鎹㈠彞璇濊褰撲笂闈㈢殑鎯呭喌鍑虹幇鍚庯紝鎴戜滑灝卞彲浠ヤ嬌鐢?/span>Mock Object銆傝繖涔熸槸浠涔堟椂鍊欒浣跨敤Mock Object鐨?/span>answer銆?/span>

Mock Object鏄垜浠嚜宸辯紪鍐欑殑錛屾垜浠嫢鏈夋帶鍒跺畠鐨勭粷瀵圭殑鏉冨姏錛屾垜浠彲浠ュ畾鍒跺畠鐨勮涓哄拰杈撳嚭銆?/span>

 

Use Mock Object

浣跨敤Mock Object瑙e喅涓婅堪闂鍙垎涓夋璧幫細

 

1. Use an interface to describe the object

2. Implement the interface for production code

3. Implement the interface in a mock object for testing [3]

榪樻湁涓鐐瑰氨鏄浜?/span>Internal Mock Object鏃╂櫄浣犺瀹炵幇鍑哄叾Real world object鐨勶紝鍥犱負閭f槸浣犵郴緇熺殑涓閮ㄥ垎銆?/span>

 

涓涓敼鑷祫鏂?/span>[3]鐨勪緥瀛?/span>

public interface Environmental {

public long getTime();

// Other methods omitted...

}

瀵逛簬榪欐牱涓涓帴鍙o紝鎴戜滑鎻愪緵涓ょ瀹炵幇,

//real world object

public class SystemEnvironment implements Environmental {

public long getTime() {

return System.currentTimeMillis();

}

// other methods ...

}

 

//mock object

public class MockSystemEnvironment implements Environmental {

public long getTime() {

return currentTime;

}

public void setTime(Time aTime){

         this.currentTime = aTime;

}

private Time currentTime;

//others

}

鎴戜滑鍙互鐪嬪埌鍦?/span>MockSystemEnvironment涓垜浠彁渚?#8220;setTime”鍑芥暟鏄負浜嗘彁渚涙帶鍒?/span>Mock Object鐨勬帴鍙c?/span>

 

鎴戜滑瑕佹祴璇曠殑綾?/span>

//TestedObject

public class TestedObject{

         private Environmental env;

         TestedObject(Environmental aEnv){

                   this.env = aEnv;

}

public boolean isAm(){

         Calendar cal = Calendar.getInstance();

cal.setTimeInMillis(env.getTime());

int hour = cal.get(Calendar.HOUR_OF_DAY);

         if (hour <=12) return true;

         return false;

}

}

 

灝嗚嫻嬭瘯鐨勭被鏀懼叆鍗曞厓嫻嬭瘯妗嗘灦

public class TestTestedObject extends TestCase {

        public void testIsAm(){

                  MockSystemEnvironment env = new MockSystemEnvironment();

                   // Set up a target test time

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, 2004);

cal.set(Calendar.MONTH, 10);

cal.set(Calendar.DAY_OF_MONTH, 1);

cal.set(Calendar.HOUR_OF_DAY, 16);

cal.set(Calendar.MINUTE, 55);

long t1 = cal.getTimeInMillis();

env.setTime(t1);

 

                   TestedObject to = new TestedObject(env);

                   assertFalse(to.isAm());

}

}

鍦ㄨ鍗曞厓嫻嬭瘯涓垜浠嬌鐢ㄤ簡Mock Object,騫朵笖鍦ㄤ嬌鐢ㄥ墠鎴戜滑鍒╃敤setTime鎺ュ彛錛岃緭鍏ヤ簡鎴戜滑闇瑕佺殑鍊箋傜粨鏋滄垜浠細閫氳繃嫻嬭瘯銆傚鏋滄垜浠嬌鐢?/span>Real Object錛屾垜浠緱鍒扮殑嫻嬭瘯緇撴灉灝嗘槸涓嶅浐瀹氱殑錛屽悗鑰呭彲涓嶆槸鎵鏈熸湜鐨勩備粠榪欎釜渚嬪瓙涓綘涔熷簲璇ヤ綋浼氬埌Mock object鐨勪竴浜涘ソ澶勪簡銆?/span>

 

濡傛灉鎴戜滑鎬繪槸鎵嬪姩鍐欐垜浠渶瑕佺殑Mock Object錛岄偅灝嗘槸涓涓緢澶х殑宸ヤ綔閲忋傜幇鍦ㄤ笟鐣屾湁浜?/span>Mock Objects銆?/span>easy mock絳夊紑婧愭鏋剁殑鏀寔錛屾槸鎴戜滑緙栧啓Mock object鍙樺緱瓚婃潵瓚婂鏄撱?/span>

 

鍙傝冭祫鏂欙細

1銆併?/span>Test-Driven Development – A practical guide銆?/span>

2銆併?/span>JUnit in action銆?/span>

3銆併?/span>Pragmatic Unit Testing銆?/span>



calvin 2009-08-16 16:16 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 在线看片免费人成视频福利| 亚洲人成无码www久久久| MM1313亚洲国产精品| 亚洲成人在线电影| 亚洲国产精品特色大片观看完整版| 成年女人免费视频播放77777| 91福利视频免费观看| 中文字幕手机在线免费看电影| 亚洲日韩精品射精日| 色吊丝最新永久免费观看网站 | 热久久这里是精品6免费观看| 亚洲一区二区三区丝袜| 亚洲人成网77777亚洲色| 亚洲色欲色欲www在线丝| 免费一级毛片不卡不收费| 在线观看的免费网站无遮挡| 亚洲w码欧洲s码免费| 免费无码肉片在线观看| 亚洲综合亚洲综合网成人| 亚洲av综合av一区| 久久亚洲精品无码av| 精品一区二区三区高清免费观看 | 亚洲国产成AV人天堂无码| 一个人免费观看视频在线中文| 久久99精品免费视频| 国产在线a不卡免费视频| 久久久久久免费一区二区三区| 毛片a级毛片免费播放100| 亚洲国产另类久久久精品黑人 | 337p欧洲亚洲大胆艺术| 一级A毛片免费观看久久精品| 日韩免费精品视频| 亚洲A∨无码无在线观看| 青青操视频在线免费观看| 国产亚洲情侣一区二区无码AV| 亚洲国产成人久久综合| 成年在线观看网站免费| 亚洲一卡二卡三卡四卡无卡麻豆| 182tv免费视频在线观看| 亚洲午夜日韩高清一区| 在线观看亚洲精品专区|