鎴戜滑浣跨敤鐨勫紑鍙戠幆澧冩槸Eclipse 3.2錛屽畠宸茬粡鑷甫浜咼Unit 4.1錛屼綘闇瑕佸皢JUnit 4 Library娣誨姞鍒伴」鐩敤鍒扮殑Library涓傚彟澶栵紝蹇呴』浣跨敤JDK 5.0鎴栨洿楂樼増鏈?/p>
瑕佸湪Eclipse鐜涔嬪榪愯JUnit錛岄渶瑕佷笅杞絁Unit 4.1銆?/p>
鎴戜滑鍏堢湅涓涓畝鍗曠殑Math綾伙細
娉ㄦ剰exp()鏂規(guī)硶鏄湁Bug鐨勶紝濡傛灉浼犲叆鍙傛暟2, -1錛屽垯鏈熷緟鐨勮繑鍥炲煎簲涓?.5F錛屼絾瀹為檯榪斿洖鍊間負1.0F銆?/p>
涓嬮潰鎴戜滑鐪嬬湅浼犵粺鐨凧Unit鐨凾estCase錛?/p>
JUnit渚濊禆鍙嶅皠鏉ユ墽琛屾瘡涓互test寮澶寸殑鏂規(guī)硶銆傜劧鑰岋紝鍦ㄦ渶鏂扮殑JUnit 4涓紝鐢變簬鏈変簡Annotation鐨勬敮鎸侊紝鎴戜滑鐨勬祴璇曟柟娉曚笉闇瑕佸啀浠estXxx鏍囪瘑浜嗭紝鑰屾槸鍐欎笂涓涓狜Test鏍囨敞鍗沖彲銆備緥濡傦細
鐢氳嚦MathTest綾諱篃涓嶅繀緇ф壙鑷猅estCase銆備綘涔熻浼氭兂鍒幫紝涓嶇戶鎵胯嚜TestCase灝辨棤娉曡皟鐢╝ssertXxx鏂規(guī)硶浜嗭紝姝e洜涓哄姝わ紝鎵鏈夌殑assertXxx鏂規(guī)硶鍏ㄩ儴浠ラ潤鎬佹柟娉曡鏀懼叆浜咥ssert綾伙紝浣跨敤Assert.assertXxx()璋冪敤銆傚鏋滀嬌鐢?/p>
鍒欏師鏈夌殑浠g爜涓嶅繀鏀瑰姩銆?/p>
setUp()鍜宼earDown()鏂規(guī)硶涔熶緷璧朄Before鍜孈After鏍囪錛岃繖鏍峰仛鐨勬渶澶х殑濂藉鏄湪緇ф壙浣撶郴鍐呬笉蹇呮媴蹇冨繕璁頒簡鍦╯etUp()鏂規(guī)硶涓皟鐢ㄧ埗綾葷殑super.setUp()鏂規(guī)硶錛孞Unit妗嗘灦浼氳嚜鍔ㄥ鐞嗙埗綾葷殑@Before鍜孈After鏍囪鐨勬柟娉曘?/p>
騫朵笖錛孞Unit妗嗘灦瀵笯Before鍜孈After鐨勮皟鐢ㄩ『搴忕被浼間簬綾葷殑鏋勯犳柟娉曞拰鏋愭瀯鏂規(guī)硶錛屽嵆@Before鎸夌収鐖剁被鍒板瓙綾葷殑欏哄簭璋冪敤錛孈After鍒欑浉鍙嶏紝榪欐牱淇濊瘉浜嗚祫婧愮殑姝g‘鑾峰彇鍜岄噴鏀俱?/p>
褰撶劧錛屼笉鍐嶅己榪繀欏諱嬌鐢╯etUp鍜宼earDown浣滀負鏂規(guī)硶鍚嶏紝鍙互浣跨敤鏇存湁鎰忎箟鐨勬柟娉曞悕錛屼緥濡傦細initDatabase()鍜宑loseDatabase()錛屽彧瑕佸畠浠鏍囨敞浜咢Before鍜孈After鍗沖彲銆?/p>
鏉ョ湅鐪嬩嬌鐢ˋnnotation鐨凪athTest錛?/p>
瀵規(guī)祴璇曞紓甯革紝JUnit 4鍙互鐢?font face="Courier New" color="#ff0000">expected=Exception.class鏉ユ湡寰呬竴涓鏈熺殑寮傚父錛岃屼笉蹇呯紪鍐?/p>
鏉ョ湅鐪媎oDiv0嫻嬭瘯錛屾垜浠湡寰呬竴涓櫎鏁頒負0鐨凙rithmeticException錛屽洜姝ょ紪鍐欏涓嬫祴璇曟柟娉曪細
瀵逛簬闈炲父鑰楁椂鐨勬祴璇曪紝@Test榪樻湁涓涓猼imeout鏉ユ爣璇嗚鏂規(guī)硶鏈闀挎墽琛屾椂闂達紝瓚呰繃姝ゆ椂闂村嵆琛ㄧず璇ユ祴璇曟柟娉曞け璐ワ細
浠ヤ笂鏂規(guī)硶鑻ユ墽琛屾椂闂磋秴榪?ms鍒欐祴璇曞け璐ワ紝鐢變簬渚濊禆CPU鐨勬墽琛岄熷害錛屽湪涓嶅悓鐨勬満鍣ㄤ笂嫻嬭瘯緇撴灉涔熶笉鍚屻?/p>
JUnit 4鍙︿竴涓緝澶х殑鍙樺寲鏄紩鍏ヤ簡@BeforeClass鍜孈AfterClass錛屽畠浠湪涓涓猅est綾葷殑鎵鏈夋祴璇曟柟娉曟墽琛屽墠鍚庡悇鎵ц涓嬈°傝繖鏄負浜嗚兘鍦ˊBeforeClass涓垵濮嬪寲涓浜涙槀璐電殑璧勬簮錛屼緥濡傛暟鎹簱榪炴帴錛岀劧鍚庢墽琛屾墍鏈夌殑嫻嬭瘯鏂規(guī)硶錛屾渶鍚庡湪@AfterClass涓噴鏀捐祫婧愩?/p>
姝e浣犺兘鎯沖埌鐨勶紝鐢變簬@BeforeClass鍜孈AfterClass浠呮墽琛屼竴嬈★紝鍥犳瀹冧滑鍙兘鏍囪闈欐佹柟娉曪紝鍦ㄦ墍鏈夋祴璇曟柟娉曚腑鍏變韓鐨勮祫婧愪篃蹇呴』鏄潤鎬佸紩鐢細
鏈鍚庢墽琛屾祴璇曠敤渚嬶紝鍙互鐪嬪埌緇撴灉錛?/p>
鍚勪釜鏂規(guī)硶鎵ц欏哄簭濡備笅錛?/p>
call @BeforeClass and init database connection
new MathTest instance.
call @Before before a test method
call @After after a test method
new MathTest instance.
call @Before before a test method
call @After after a test method
...
call @AfterClass to release database connection
鍙互鐪嬪埌錛孈BeforeClass鏄湪瀹炰緥鍖朚athTest涔嬪墠璋冪敤鐨勶紝鍥犳涓嶈兘鍦ㄦ瀯閫犳柟娉曚腑鍒濆鍖栧叡浜祫婧愩?/p>
鏈鍚庨渶瑕佹敞鎰忕殑鏄敱浜嶫ava 5鐨勮嚜鍔˙ox/Unbox鐗規(guī)э紝鍦ㄨ皟鐢╝ssertEquals()鏃惰鐗瑰埆娉ㄦ剰錛屽鏋滀綘浼犲叆錛?/p>
assertEquals(100F, 100);
鍒欐寜鐓ц嚜鍔˙ox鍙樹負錛?/p>
assertEquals(new Float(100F), new Integer(100));
嫻嬭瘯澶辮觸錛屽洜涓篎loat綾誨拰Integer綾諱笉鏄悓涓綾誨瀷銆?/p>
鍥犳瑕佺壒鍒敞鎰廸loat鍜宒ouble鐨勬祴璇曘備簨瀹炰笂瀵筬loat鍜宒ouble搴斾嬌鐢?/p>
assertEquals(float, float, float delta);
assertEquals(double, double, double delta);
delta鎸囧畾浜嗕袱涓綔姣旇緝鐨勬誕鐐規(guī)暟鐨勭浉宸寖鍥達紝鍦ㄦ鑼冨洿鍐呯殑涓や釜嫻偣鏁板皢璁や負鐩哥瓑銆傚彲浠ヤ紶鍏ヤ竴涓緢灝忕殑鏁頒緥濡?.0001F銆?nbsp;
JUnit 4闈炲父閫傚悎浣跨敤Java 5鐨勫紑鍙戜漢鍛橈紝浣嗘槸鏃犳硶鍦↗ava 1.4涓幏寰楄繖浜涘ソ澶勶紝騫朵笖錛屼篃涓嶄笌浠ュ墠鐨勭増鏈吋瀹廣傚洜姝わ紝濡傛灉浣犳鍦ㄤ嬌鐢↗ava 5錛屽氨鍙互鑰冭檻浣跨敤JUnit 4鏉ョ紪鍐欐祴璇曘?br />
姝ゆ枃绔犳潵鑷細http://www.javaeedev.com/blog/article.jspx?articleId=ff80808112e766ee011312f144520061
TDD鐨勫熀鏈濊礬灝辨槸閫氳繃嫻嬭瘯鏉ユ帹鍔ㄦ暣涓紑鍙戠殑榪涜銆傝屾祴璇曢┍鍔ㄥ紑鍙戞妧鏈茍涓嶅彧鏄崟綰殑嫻嬭瘯宸ヤ綔銆?/span>
闇姹傚悜鏉ュ氨鏄蔣浠跺紑鍙戣繃紼嬩腑鎰熻鏈涓嶅ソ鏄庣‘鎻忚堪銆佹槗鍙樼殑涓滆タ銆傝繖閲岃鐨勯渶姹備笉鍙槸鎸囩敤鎴風殑闇姹傦紝榪樺寘鎷浠g爜鐨勪嬌鐢ㄩ渶姹傘傚緢澶氬紑鍙戜漢鍛樻渶瀹蟲曠殑灝辨槸鍚庢湡榪樿淇敼鏌愪釜綾繪垨鑰呭嚱鏁扮殑鎺ュ彛榪涜淇敼鎴栬呮墿灞曪紝涓轟粈涔堜細鍙戠敓榪欐牱鐨勪簨鎯呭氨鏄洜涓鴻繖閮ㄥ垎浠g爜鐨勪嬌鐢ㄩ渶姹傛病鏈夊緢濂界殑鎻忚堪銆傛祴璇曢┍鍔ㄥ紑鍙戝氨鏄氳繃緙栧啓嫻嬭瘯鐢ㄤ緥錛屽厛鑰冭檻浠g爜鐨勪嬌鐢ㄩ渶姹傦紙鍖呮嫭鍔熻兘銆佽繃紼嬨佹帴鍙g瓑錛夛紝鑰屼笖榪欎釜鎻忚堪鏄棤浜屼箟鐨勶紝鍙墽琛岄獙璇佺殑銆?/span>
閫氳繃緙栧啓榪欓儴鍒嗕唬鐮佺殑嫻嬭瘯鐢ㄤ緥錛屽鍏跺姛鑳界殑鍒嗚В銆佷嬌鐢ㄨ繃紼嬨佹帴鍙i兘榪涜浜嗚璁°傝屼笖榪欑浠庝嬌鐢ㄨ搴﹀浠g爜鐨勮璁¢氬父鏇寸鍚堝悗鏈熷紑鍙戠殑闇姹傘傚彲嫻嬭瘯鐨勮姹傦紝瀵逛唬鐮佺殑鍐呰仛鎬х殑鎻愰珮鍜屽鐢ㄩ兘闈炲父鏈夌泭銆傚洜姝ゆ祴璇曢┍鍔ㄥ紑鍙戜篃鏄竴縐嶄唬鐮佽璁$殑榪囩▼銆?/span>
寮鍙戜漢鍛橀氬父瀵圭紪鍐欐枃妗i潪甯稿帉鐑︼紝浣嗚浣跨敤銆佺悊瑙e埆浜虹殑浠g爜鏃墮氬父鍙堝笇鏈涜兘鏈夋枃妗h繘琛屾寚瀵箋傝屾祴璇曢┍鍔ㄥ紑鍙戣繃紼嬩腑浜х敓鐨勬祴璇曠敤渚嬩唬鐮佸氨鏄浠g爜鐨勬渶濂界殑瑙i噴銆?/span>
蹇箰宸ヤ綔鐨勫熀紜灝辨槸瀵硅嚜宸辨湁淇″績錛屽鑷繁鐨勫伐浣滄垚鏋滄湁淇″績銆傚綋鍓嶅緢澶氬紑鍙戜漢鍛樺嵈緇忓父鍦ㄦ媴蹇冿細“浠g爜鏄惁姝g‘錛?#8221;“杈涜嫤緙栧啓鐨勪唬鐮佽繕鏈夋病鏈変弗閲峛ug錛?#8221;“淇敼鐨勬柊浠g爜瀵瑰叾浠栭儴鍒嗘湁娌℃湁褰卞搷錛?#8221;銆傝繖縐嶆媴蹇冪敋鑷沖鑷存煇浜涗唬鐮佸簲璇ヤ慨鏀瑰嵈涓嶆暍淇敼鐨勫湴姝ャ傛祴璇曢┍鍔ㄥ紑鍙戞彁渚涚殑嫻嬭瘯闆嗗氨鍙互浣滀負浣犱俊蹇冪殑鏉ユ簮銆?/span>
褰撶劧嫻嬭瘯椹卞姩寮鍙戞渶閲嶈鐨勫姛鑳借繕鍦ㄤ簬淇濋殰浠g爜鐨勬紜э紝鑳藉榪呴熷彂鐜般佸畾浣峛ug銆傝岃繀閫熷彂鐜般佸畾浣峛ug鏄緢澶氬紑鍙戜漢鍛樼殑姊︽兂銆傞拡瀵瑰叧閿唬鐮佺殑嫻嬭瘯闆嗭紝浠ュ強涓嶆柇瀹屽杽鐨勬祴璇曠敤渚嬶紝涓鴻繀閫熷彂鐜般佸畾浣峛ug鎻愪緵浜嗘潯浠躲?/span>
鎴戠殑涓孌靛姛鑳介潪甯稿鏉傜殑浠g爜浣跨敤TDD寮鍙戝畬鎴愶紝鐪熷疄鐜搴旂敤涓彧鍙戠幇鍑犱釜bug錛岃屼笖寰堝揩琚畾浣嶈В鍐熾傛?zhèn)ㄥ湪搴旂敤鍚庡Q屼篃涓瀹氫細涓洪偅縐嶈嚜淇$殑寮鍙戣繃紼嬶紝鍔熻兘涓嶆柇澧炲姞銆佸畬鍠勭殑鎰熻錛岃繀閫熷彂鐜般佸畾浣峛ug鐨勮兘鍔涙墍鎰熸煋錛屽枩嬈㈣繖涓妧鏈殑銆?/span>
鍗佷竴銆佹祴璇曢┍鍔ㄥ紑鍙戯紙TDD錛?font style="background-color: #ffffff">鍘熺悊錛?/span>
嫻嬭瘯椹卞姩寮鍙戠殑鍩烘湰鎬濇兂灝辨槸鍦ㄥ紑鍙戝姛鑳戒唬鐮佷箣鍓嶏紝鍏堢紪鍐欐祴璇曚唬鐮併備篃灝辨槸璇村湪鏄庣‘瑕佸紑鍙戞煇涓姛鑳藉悗錛岄鍏堟濊冨浣曞榪欎釜鍔熻兘榪涜嫻嬭瘯錛屽茍瀹屾垚嫻嬭瘯浠g爜鐨勭紪鍐欙紝鐒跺悗緙栧啓鐩稿叧鐨勪唬鐮佹弧瓚寵繖浜涙祴璇曠敤渚嬨傜劧鍚庡驚鐜繘琛屾坊鍔犲叾浠栧姛鑳斤紝鐩村埌瀹屽叏閮ㄥ姛鑳界殑寮鍙戙?/span>
鎴戜滑榪欓噷鎶婅繖涓妧鏈殑搴旂敤棰嗗煙浠庝唬鐮佺紪鍐欐墿灞曞埌鏁翠釜寮鍙戣繃紼嬨傚簲璇ュ鏁翠釜寮鍙戣繃紼嬬殑鍚勪釜闃舵榪涜嫻嬭瘯椹卞姩錛岄鍏堟濊冨浣曞榪欎釜闃舵榪涜嫻嬭瘯銆侀獙璇併佽冩牳錛屽茍緙栧啓鐩稿叧鐨勬祴璇曟枃妗o紝鐒跺悗寮濮嬩笅涓姝ュ伐浣滐紝鏈鍚庡啀楠岃瘉鐩稿叧鐨勫伐浣溿備笅鍥炬槸涓涓瘮杈冩祦琛岀殑嫻嬭瘯妯″瀷錛歏嫻嬭瘯妯″瀷銆?/span>
鍦ㄥ紑鍙戠殑鍚勪釜闃舵錛屽寘鎷渶姹傚垎鏋愩佹瑕佽璁°佽緇嗚璁°佺紪鐮佽繃紼嬩腑閮藉簲璇ヨ冭檻鐩稿搴旂殑嫻嬭瘯宸ヤ綔錛屽畬鎴愮浉鍏崇殑嫻嬭瘯鐢ㄤ緥鐨勮璁°佹祴璇曟柟妗堛佹祴璇曡鍒掔殑緙栧啓銆傝繖閲屾彁鍒扮殑寮鍙戦樁孌靛彧鏄婦渚嬶紝鏍規(guī)嵁瀹為檯鐨勫紑鍙戞椿鍔ㄨ繘琛岃皟鏁淬傜浉鍏崇殑嫻嬭瘯鏂囨。涔熶笉涓瀹氭槸闈炲父璇︾粏澶嶆潅鐨勬枃妗o紝鎴栬呬粈涔堝艦寮忥紝浣嗗簲璇?span style="background-color: yellow">鍏繪垚嫻嬭瘯椹卞姩鐨勪範鎯?/span>銆?/span>
鍏充簬嫻嬭瘯妯″瀷錛岃繕鏈塜嫻嬭瘯妯″瀷銆傝繖涓祴璇曟ā鍨嬶紝鎴戣涓猴紝鏄璇︾粏闃舵鍜岀紪鐮侀樁孌佃繘琛屽緩妯★紝搴旇璇存洿璇︾粏鐨勬弿榪頒簡璇︾粏璁捐鍜岀紪鐮侀樁孌電殑寮鍙戣涓恒傚強閽堝鏌愪釜鍔熻兘榪涜瀵瑰簲鐨勬祴璇曢┍鍔ㄥ紑鍙戙?/span>
杞歡寮鍙戝叾浠栭樁孌電殑嫻嬭瘯椹卞姩寮鍙戯紝鏍規(guī)嵁嫻嬭瘯椹卞姩寮鍙戠殑鎬濇兂瀹屾垚瀵瑰簲鐨勬祴璇曟枃妗e嵆鍙備笅闈㈤拡瀵硅緇嗚璁″拰緙栫爜闃舵榪涜浠嬬粛銆傛祴璇曢┍鍔ㄥ紑鍙戠殑鍩烘湰榪囩▼濡備笅錛?br /> 1錛?鏄庣‘褰撳墠瑕佸畬鎴愮殑鍔熻兘銆傚彲浠ヨ褰曟垚涓涓?TODO 鍒楄〃銆?br /> 2錛?蹇熷畬鎴愰拡瀵規(guī)鍔熻兘鐨勬祴璇曠敤渚嬬紪鍐欍?br /> 3錛?嫻嬭瘯浠g爜緙栬瘧涓嶉氳繃銆?br /> 4錛?緙栧啓瀵瑰簲鐨勫姛鑳戒唬鐮併?br /> 5錛?嫻嬭瘯閫氳繃銆?br /> 6錛?瀵逛唬鐮佽繘琛岄噸鏋勶紝騫朵繚璇佹祴璇曢氳繃銆?br /> 7錛?寰幆瀹屾垚鎵鏈夊姛鑳界殑寮鍙戙?/p>
寮鍙戣繃紼嬩腑錛岄氬父鎶婃祴璇曚唬鐮佸拰鍔熻兘浠g爜鍒嗗紑瀛樻斁錛岃繖閲屾彁渚涗竴涓畝鍗曠殑嫻嬭瘯妗嗘灦浣跨敤渚嬪瓙錛屾?zhèn)ㄥ彲浠ラ氳繃瀹冧簡瑙f祴璇曟鏋剁殑浣跨敤銆備笅闈㈡槸鏂囦歡鍒楄〃銆?/span>
project/ 欏圭洰涓葷洰褰?
project/test 嫻嬭瘯欏圭洰涓葷洰褰?
project/test/testSeq.cpp 嫻嬭瘯seq_t 鐨勬祴璇曟枃浠訛紝瀵瑰叾浠栧姛鑳芥枃浠剁殑嫻嬭瘯鏂囦歡澶嶅埗鍚庝慨鏀瑰嵆鍙?
project/test/testSeq.h
project/test/Makefile 嫻嬭瘯欏圭洰鐨?Makefile
project/test/main.cpp 嫻嬭瘯欏圭洰鐨勪富鏂囦歡錛屼笉闇瑕佷慨鏀?
project/main.cpp 欏圭洰鐨勪富鏂囦歡
project/seq_t.h 鍔熻兘浠g爜錛岃嫻嬭瘯鏂囦歡
project/Makefile 欏圭洰鐨?Makefile
鍗佷簩銆佹祴璇曢┍鍔ㄥ紑鍙戯紙TDD錛夊師鍒欙細嫻嬭瘯闅旂銆備笉鍚屼唬鐮佺殑嫻嬭瘯搴旇鐩鎬簰闅旂銆傚涓鍧椾唬鐮佺殑嫻嬭瘯鍙冭檻姝や唬鐮佺殑嫻嬭瘯錛屼笉瑕佽冭檻鍏跺疄鐜扮粏鑺傦紙姣斿瀹冧嬌鐢ㄤ簡鍏朵粬綾葷殑杈圭晫鏉′歡錛夈?/span>
涓欏跺附瀛愩傚紑鍙戜漢鍛樺紑鍙戣繃紼嬩腑瑕佸仛涓嶅悓鐨勫伐浣滐紝姣斿錛氱紪鍐欐祴璇曚唬鐮併佸紑鍙戝姛鑳戒唬鐮併佸浠g爜閲嶆瀯絳夈傚仛涓嶅悓鐨勪簨錛屾壙鎷呬笉鍚岀殑瑙掕壊銆傚紑鍙戜漢鍛樺畬鎴愬搴旂殑宸ヤ綔鏃跺簲璇?br /> 淇濇寔娉ㄦ剰鍔涢泦涓湪褰撳墠宸ヤ綔涓婏紝鑰屼笉瑕佽繃澶氱殑鑰冭檻鍏朵粬鏂歸潰鐨勭粏鑺傦紝淇濊瘉澶翠笂鍙湁涓欏跺附瀛愩傞伩鍏嶈冭檻鏃犲叧緇嗚妭榪囧錛屾棤璋撳湴澧炲姞澶嶆潅搴︺?/span>
嫻嬭瘯鍒楄〃銆傞渶瑕佹祴璇曠殑鍔熻兘鐐瑰緢澶氥傚簲璇ュ湪浠諱綍闃舵鎯蟲坊鍔犲姛鑳介渶姹傞棶棰樻椂錛屾妸鐩稿叧鍔熻兘鐐瑰姞鍒版祴璇曞垪琛ㄤ腑錛岀劧鍚庣戶緇墜澶村伐浣溿傜劧鍚庝笉鏂殑瀹屾垚瀵瑰簲鐨勬祴璇曠敤渚嬨佸姛鑳?br /> 浠g爜銆侀噸鏋勩備竴鏄伩鍏嶇枏婕忥紝涔熼伩鍏嶅共鎵板綋鍓嶈繘琛岀殑宸ヤ綔銆?/span>
嫻嬭瘯椹卞姩銆傝繖涓瘮杈冩牳蹇冦傚畬鎴愭煇涓姛鑳斤紝鏌愪釜綾伙紝棣栧厛緙栧啓嫻嬭瘯浠g爜錛岃冭檻鍏跺浣曚嬌鐢ㄣ佸浣曟祴璇曘傜劧鍚庡湪瀵瑰叾榪涜璁捐銆佺紪鐮併?/span>
鍏堝啓鏂█銆傛祴璇曚唬鐮佺紪鍐欐椂錛屽簲璇ラ鍏堢紪鍐欏鍔熻兘浠g爜鐨勫垽鏂敤鐨勬柇璦璇彞錛岀劧鍚庣紪鍐欑浉搴旂殑杈呭姪璇彞銆?/span>
鍙祴璇曟с傚姛鑳戒唬鐮佽璁°佸紑鍙戞椂搴旇鍏鋒湁杈冨己鐨勫彲嫻嬭瘯鎬с傚叾瀹為伒寰瘮杈冨ソ鐨勮璁″師鍒欑殑浠g爜閮藉叿澶囪緝濂界殑嫻嬭瘯鎬с傛瘮濡傛瘮杈冮珮鐨勫唴鑱氭э紝灝介噺渚濊禆浜庢帴鍙g瓑銆?/span>
鍙婃椂閲嶆瀯銆傛棤璁烘槸鍔熻兘浠g爜榪樻槸嫻嬭瘯浠g爜錛屽緇撴瀯涓嶅悎鐞嗭紝閲嶅鐨勪唬鐮佺瓑鎯呭喌錛屽湪嫻嬭瘯閫氳繃鍚庯紝鍙婃椂榪涜閲嶆瀯銆?/span>
灝忔鍓嶈繘銆傝蔣浠跺紑鍙戞槸涓鏉傛ч潪甯擱珮鐨勫伐浣滐紝寮鍙戣繃紼嬩腑瑕佽冭檻寰堝涓滆タ錛屽寘鎷唬鐮佺殑姝g‘鎬с佸彲鎵╁睍鎬с佹ц兘絳夌瓑錛屽緢澶氶棶棰橀兘鏄洜涓哄鏉傛уお澶у鑷寸殑銆傛瀬闄愮紪紼?br />
鎻愬嚭浜嗕竴涓潪甯稿ソ鐨勬濊礬灝辨槸灝忔鍓嶈繘銆傛妸鎵鏈夌殑瑙勬ā澶с佸鏉傛ч珮鐨勫伐浣滐紝鍒嗚В鎴愬皬鐨勪換鍔℃潵瀹屾垚銆傚浜庝竴涓被鏉ヨ錛屼竴涓姛鑳戒竴涓姛鑳界殑瀹屾垚錛屽鏋滃お鍥?br />
闅懼氨鍐嶅垎瑙c傛瘡涓姛鑳界殑瀹屾垚灝辮蛋嫻嬭瘯浠g爜錛嶅姛鑳戒唬鐮侊紞嫻嬭瘯錛嶉噸鏋?/span>鐨勫驚鐜傞氳繃鍒嗚В闄嶄綆鏁翠釜緋葷粺寮鍙戠殑澶嶆潅鎬с傝繖鏍風殑鏁堟灉闈炲父鏄庢樉銆傚嚑涓皬鐨勫姛鑳戒唬鐮?br />
瀹屾垚鍚庯紝澶х殑鍔熻兘浠g爜鍑犱箮鏄笉鐢ㄨ皟璇曞氨鍙互閫氳繃銆備竴涓釜綾繪柟娉曠殑瀹炵幇錛屽緢蹇氨鐪嬪埌鏁翠釜綾誨緢蹇氨瀹屾垚鍟︺傛湰鏉ユ劅瑙夊緢澶氱壒鎬ч渶瑕佸鍔狅紝寰堝揩灝變細鐪嬪埌娌℃湁
鍑犱釜鍟︺備綘鐢氳嚦浼氫負榪欎釜閫熷害鎰熷埌闇囨儕銆傦紙鎴戠悊瑙o紝鏄ぇ騫呭害鍑忓皯璋冭瘯銆佸嚭閿欑殑鏃墮棿浜х敓鐨勮繖縐嶉熷害鎰燂級
鍗佷笁銆佹祴璇曢┍鍔ㄥ紑鍙戯紙TDD錛夋祴璇曟妧鏈細
1. 嫻嬭瘯鑼冨洿銆佺矑搴?br />
瀵瑰摢浜涘姛鑳借繘琛屾祴璇曪紵浼氫笉浼氬お綣佺悙錛熶粈涔堟椂鍊欏彲浠ュ仠姝㈡祴璇曪紵榪欎簺闂姣旇緝甯歌銆傛寜澶у笀 Kent Benk 鐨勮瘽錛屽閭d簺浣犺涓哄簲璇ユ祴璇曠殑浠g爜榪涜嫻嬭瘯銆傚氨鏄錛岃鐩鎬俊鑷繁鐨勬劅瑙夛紝鑷繁鐨勭粡楠屻傞偅浜涢噸瑕佺殑鍔熻兘銆佹牳蹇冪殑浠g爜灝卞簲璇ラ噸鐐規(guī)祴璇曘傛劅鍒扮柌鍔沖氨搴旇鍋滀笅鏉ヤ紤鎭竴涓嬨傛劅瑙夋病鏈夊繀瑕佹洿璇︾粏鐨勬祴璇曪紝灝卞仠姝㈡湰杞祴璇曘?/span>
嫻嬭瘯椹卞姩寮鍙戝己璋冩祴璇曞茍涓嶅簲璇ユ槸璐熸媴錛岃屽簲璇ユ槸甯姪鎴戜滑鍑忚交宸ヤ綔閲忕殑鏂規(guī)硶銆傝屽浜庝綍鏃跺仠姝㈢紪鍐欐祴璇曠敤渚嬶紝涔熸槸搴旇鏍規(guī)嵁浣犵殑緇忛獙錛屽姛鑳藉鏉傘佹牳蹇冨姛鑳界殑浠g爜灝卞簲璇ョ紪鍐欐洿鍏ㄩ潰銆佺粏鑷寸殑嫻嬭瘯鐢ㄤ緥錛屽惁鍒欐祴璇曟祦紼嬪嵆鍙?/span>
嫻嬭瘯鑼冨洿娌℃湁闈欐佺殑鏍囧噯錛屽悓鏃朵篃搴旇鍙互闅忕潃鏃墮棿鏀瑰彉銆傚浜庡紑濮嬫病鏈夌紪鍐欒凍澶熺殑嫻嬭瘯鐨勫姛鑳戒唬鐮侊紝闅忕潃bug鐨勫嚭鐜幫紝鏍規(guī)嵁bug琛ラ綈鐩稿叧鐨勬祴璇曠敤渚嬪嵆鍙?/span>
灝忔鍓嶈繘鐨勫師鍒欙紝瑕佹眰鎴戜滑瀵瑰ぇ鐨勫姛鑳藉潡嫻嬭瘯鏃訛紝搴旇鍏堝垎鎷嗘垚鏇村皬鐨勫姛鑳藉潡榪涜嫻嬭瘯錛屾瘮濡備竴涓被A浣跨敤浜嗙被B銆丆錛屽氨搴旇緙栧啓鍒癆浣跨敤B銆丆鍔熻兘鐨勬祴璇曚唬鐮佸墠錛屽畬鎴愬B銆丆鐨勬祴璇曞拰寮鍙戙傞偅涔堟槸涓嶆槸姣忎釜灝忕被鎴栬呭皬鍑芥暟閮藉簲璇ユ祴璇曞摢錛熸垜璁や負娌℃湁蹇呰銆備綘搴旇榪愮敤浣犵殑緇忛獙錛屽閭d簺鍙兘鍑洪棶棰樼殑鍦版柟閲嶇偣嫻嬭瘯錛屾劅瑙変笉鍙兘鍑洪棶棰樼殑鍦版柟灝辯瓑瀹冪湡姝e嚭闂鐨勬椂鍊欏啀琛ユ祴璇曞惂銆?br />
2. 鎬庝箞緙栧啓嫻嬭瘯鐢ㄤ緥
嫻嬭瘯鐢ㄤ緥鐨勭紪鍐欏氨鐢ㄤ笂浜嗕紶緇熺殑嫻嬭瘯鎶鏈?/span>