锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久久国产精品无码下载,久久天天躁狠狠躁夜夜avapp,久久青青草原精品国产不卡http://www.shnenglu.com/leetaolion/category/4356.htmlOnly those who have the patience to do simple things perfectly ever acquire the skill to do difficult things easily. zh-cnTue, 20 May 2008 00:53:00 GMTTue, 20 May 2008 00:53:00 GMT60娓╁害璁$殑瀵撹█http://www.shnenglu.com/leetaolion/archive/2008/03/14/44525.html鍒涘緩鏇村ソ鐨勮В鍐蟲柟妗?/dc:creator>鍒涘緩鏇村ソ鐨勮В鍐蟲柟妗?/author>Fri, 14 Mar 2008 12:49:00 GMThttp://www.shnenglu.com/leetaolion/archive/2008/03/14/44525.htmlhttp://www.shnenglu.com/leetaolion/comments/44525.htmlhttp://www.shnenglu.com/leetaolion/archive/2008/03/14/44525.html#Feedback0http://www.shnenglu.com/leetaolion/comments/commentRss/44525.htmlhttp://www.shnenglu.com/leetaolion/services/trackbacks/44525.html涓鍦虹獊鍙戠殑嫻佽鎬ф劅鍐掞紝浣垮緱甯傞潰涓婁綋娓╄濂囩己錛屼環鏍間篃鏄按娑ㄨ埞楂樸備竴涓啘姘戜紒涓氬鎶曡祫50w鍒涘緩鐨勬俯搴﹁鍏徃Good Metor錛屼竴鐩存儴娣$粡钀ワ紝榪欎箞濂界殑鏈轟細錛岃嚜鐒朵笉浼氭斁榪囥傚競鍦轟笂浠鋒牸鏈楂樼殑鏄竴縐嶈兘璁板綍涓孌墊椂闂村唴浜轟綋娓╁害鍙樺寲鏇茬嚎錛屽茍鍒ゆ柇浣跨敤鑰呮槸鍚︽偅涓婅繖縐嶅彲鎬曠殑嫻佹劅鐨勬櫤鑳戒綋娓╄Smart Thermometer銆傚叾瀹炵幇寰堢畝鍗曪紝鏃犻潪鏄湪浼犵粺鐨勪綋娓╄涓婂姞涓鍧楀崟鐗囨満錛屼綋娓╄鍜屽崟鐗囨満婊″ぇ琛楅兘鏄紝鑰屽崟鐗囨満鍐呯▼搴忕殑鎺屾彙鍦ˋnyMetor鍑犲澶у瀷娓╁害璁″巶鍟嗘墜涓紝浠庝笉澶栨硠銆備簬鏄疓ood Metor鍐沖畾璧屼竴鎶婏紝鎵句漢寮鍙戣繖縐嶈蔣浠訛紝甯屾湜鍊熸鍜擱奔緲昏韓銆?br>涓涓伓鐒剁殑鏈轟細錛孏oodMetor鏉ュ埌浜哬oungSoft錛屽弻鏂逛竴鎷嶅嵆鍚堛傜敱YongSoft鎵挎媴Smart Thermometer杞歡鐨勫紑鍙戝伐浣滐紝浠烽挶璋堝畾100kRMB錛屽畾閲?0k錛屽弻鏂圭害瀹?涓湀涔嬪唴浜よ揣錛屾寜鏈熶氦璐у彟鏈夊閲?0kRMB銆?br>榪欑宸ヤ綔瀵筜ongSoft綆鐩存槸鎵嬪埌鎿掓潵錛屽摜5涓綈涓婇樀錛屼笉鑲栦袱涓湀鐨勬椂闂達紝GoodSmartMetro v1.0鐗堟湰灝盧elease浜嗐傚墿涓嬩竴涓湀鐨勬椂闂達紝5浣嶅勾杞諱漢鏈夎凍澶熺殑鏃墮棿鍠濆枬鑼訛紝鑱婅亰澶╋紝鍋氫簺闆剁鐨勬椿錛岀瓑鐫GoodMetor鏉ラ獙鏀躲?br>鍦ㄤ袱涓崐鏈堢殑鏃跺欙紝GoodMetor灝卞潗涓嶄綇浜嗭紝鍖嗗寙蹇欏繖鏉ュ埌YoungSoft錛屽綋寰楃煡杞歡宸茬粡姝e紡鍙戝竷鐨勬椂鍊欙紝鑷劧鍠滀笉鑷錛屽綋鏃ュ嵆浠樻竻璐ф鍜屽閲戯紝鍥炲巶鎵歸噺鐢熶駭銆?br>鍙曠殑嫻佹劅鍙堟寔緇簡涓や釜鏈堬紝緇堜簬鐨勫埌浜嗘湁鏁堢殑鎺у埗銆侴oodMetor鍏徃鐨勮秴浣庝環鍙兘浣撴俯璁″湪榪欐鎶楀嚮嫻佹劅涓湪涓哄浗瀹跺拰紺句細浣滃嚭鍗撹秺璐$尞鐨勫悓鏃訛紝鏇翠負鍏徃璧氫簡涓泦婊¢挼婊★紝500w鐨勭函鍒╂鼎鍟婏紝GoodMetor鐨勮佸ぇ鍋氭ⅵ閮芥病鎯沖埌榪囥?br>CPI楂樹紒錛岄挶瀛橀摱琛屼笉鏄庢櫤錛孏oodMetor鑰佸ぇ鍐沖畾錛氭墿澶х敓浜с傜敓浜у暐鍛紵鐜板湪浜洪兘璁茬┒鍋ュ悍楗錛岄ギ鐢ㄦ按涓婃洿鏄弗鏍兼妸鍏籌紝縐戝鐮旂┒琛ㄦ槑錛岀儳寮姘存椂濡傛灉姘存俯涓婂崌鏇茬嚎鍜屾帹鑽愭洸綰垮惢鍚堬紝浜哄枬浜嗕箣鍚庝細鏇村仴搴楓備簬鏄竴縐嶇洃嫻嬫按娓╂帶鍒剁伀鍊欑殑鏂板瀷鐏跺叿HealthOven搴旇繍鑰岀敓銆傝佸ぇ鎷嶆澘錛屽氨鎼炲畠浜嗐?br>浜庢槸鍙堟壘鍒頒簡YoungSoft銆?br>鍗婂勾榪囧幓浜嗭紝YoungSoft鐨勫嚑涓勾杞諱漢鍋氫簡鍑犱釜灝忛」鐩紝浜哄憳緇撴瀯涔熷彂鐢熶簡鏀瑰彉錛屽ぇ瀹舵湁浜嗘洿鏄庣‘鐨勫垎宸ャ備竴涓仈緋諱笟鍔★紝鍒嗘瀽闇姹傦紝灝戦噺緙栫爜鐨凥uManager錛屼笁涓紪鐮佺殑WenProgramers錛屼竴涓礋璐f祴璇曪紝灝戦噺緙栫爜鐨刉uTester銆?br>HuManager鍒嗘瀽璁や負錛孒ealthOven鍜孲martThermometer涔嬮棿錛岄櫎嫻嬮噺鑼冨洿浠庝漢鐨勪綋娓╀笂鍗囧埌姘寸殑娌哥偣涔嬪錛屾俯搴﹁涓殑娑蹭綋涔熶粠姘撮摱鎹㈡垚浜嗛厭綺俱侴oodSmartMetro v1.0涓噰鐢ㄤ簡涓涓厤璐圭殑娑蹭綋浣撶Н娓╁樊鎹㈢畻搴揗ercuryLib錛屾墍浠ュ仛鐨勬椂鍊欑渷鍘諱簡澶ф妸鐨勫伐浣溿傞厭綺懼拰姘撮摱鐨勭墿鐞嗗睘鎬х浉宸お澶э紝榪欐鎹㈢畻鐨勫姛鑳芥曟槸瑕佽嚜宸卞紑鍙戜簡錛屾殏瀹氬悕涓篖iquidLib錛屾敮鎸佹按閾跺拰閰掔簿鐨勪綋縐俯宸崲綆椼備絾鏄互鍓嶇洿鎺ヨ皟鐢∕ercuryLib鐨勬ā鍧楀繀欏昏繘琛岃В鑰﹀拰嫻嬭瘯錛屽鏁頒笉鑳借浜嗐?br>鏈緇堬紝鍙屽彂綰﹀畾5涓湀鍐呰蔣浠朵氦浠樹嬌鐢紝鎬諱環50wRMB錛屽畾閲?0wRMB錛屽強鏃朵氦浠樺閲?wRMB銆?br>鍦℅oodSmartMetro v2.0寮鍙戣繘琛屽埌絎?涓湀鐨勬椂鍊欙紝WenProgramer浜嗚В鍒幫紝浜т笟鍗囩駭榪囩▼涓紝娓╂帶鐐塆reenIron鐐奸挗鑳藉ぇ騫呴檷浣庤兘鑰楋紝騫跺湪涓嬈¢」鐩粍CCB浼氳涓婃彁浜嗗嚭鏉ワ紝澶у涓鑷磋涓篩oungSoft瑕佸姞閫熷彂灞曪紝蹇呴』鐫鐪兼湭鏉ャ侴oodSmartMetro v2.0鐗堟湰鍙互涓哄皢鏉ユ墦寮GreenIron甯傚満鏃╁仛鍑嗗銆備笉鑳藉啀鍚僊ercuryLib閭f牱鐨勪簭浜嗐侺iquidLib妯″潡闇瑕佽壇濂界殑閫氱敤鎬э紝灝嗘潵鍙互浣滀負騫沖彴鐨勫熀紜妯″潡錛屾敮鎸佸悇縐嶄笉鍚屾恫浣撳仛鎴愭俯搴﹁鐨勬俯鎺ц蔣浠跺紑鍙戙?br>GreenIron璁懼鍟嗛噰鐢ㄤ笉鍚岀殑娑蹭綋鍋氭垚鐨勬俯搴﹁錛屽湪榪欎釜闂涓婏紝涓氱晫榪樻病鏈夌粺涓鐨勬爣鍑嗐?br>錛堟湭瀹屽緟緇?..錛?br>

]]>
鐢–PPUnit鍋氬崟鍏冩祴璇曪紙鍘熸枃鍦‥鏂囧叏緲諱腑錛?/title><link>http://www.shnenglu.com/leetaolion/archive/2007/05/26/24882.html</link><dc:creator>鍒涘緩鏇村ソ鐨勮В鍐蟲柟妗?/dc:creator><author>鍒涘緩鏇村ソ鐨勮В鍐蟲柟妗?/author><pubDate>Sat, 26 May 2007 02:53:00 GMT</pubDate><guid>http://www.shnenglu.com/leetaolion/archive/2007/05/26/24882.html</guid><wfw:comment>http://www.shnenglu.com/leetaolion/comments/24882.html</wfw:comment><comments>http://www.shnenglu.com/leetaolion/archive/2007/05/26/24882.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/leetaolion/comments/commentRss/24882.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/leetaolion/services/trackbacks/24882.html</trackback:ping><description><![CDATA[<p>鐢–PPUnit鍋氬崟鍏冩祴璇?br>渚嬪瓙紼嬪簭涓嬭澆錛?a >http://www.codeproject.com/library/Using_CPPUnit/my_tests.zip</a><br>CPPUnit鏈鏂扮増鏈厤璐逛笅杞斤細<br><a >http://cppunit.sourceforge.net/</a><br>CPPUnit鏄熀浜嶤++鐨勫崟鍏冩祴璇曟鏋訛紝鍙互鏈夋晥鎻愰珮寮鍙戠殑緋葷粺璐ㄩ噺銆?br>寮曡█錛?br>QA榪囩▼甯擱噰鐢ㄤ袱縐嶆祴璇曟柟娉曪細<br>1銆佸崟鍏冩祴璇曪紙acceptance嫻嬭瘯錛夛細涓鴻蔣浠剁郴緇熶腑鐨勬瘡涓涓昏緫鍗曞厓鍒跺畾鐨勪竴緋誨垪楠岃瘉鏂規硶銆備粎嫻嬭瘯鍗曞厓鐨勫姛鑳斤紝鑰屼笉鑰冭檻鍚勪釜鍗曞厓涔嬮棿鐨勫崗浣滃叧緋匯?br>2銆佺郴緇熸祴璇曪紙闆嗘垚嫻嬭瘯錛夛細嫻嬭瘯緋葷粺鐨勫姛鑳斤紝灝ゅ叾鏄悇鍗曞厓妯″潡涔嬮棿鐨勫崗浣滃叧緋匯?br>涓嬮潰瑕佽鐨勬槸濡備綍閲囩敤CPPUnit瀵笴/C++宸ョ▼榪涜鍗曞厓嫻嬭瘯銆?br>鏂囩珷鍋囪璇昏呯啛鎮夊崟鍏冩祴璇曠殑姒傚康鍙婂叾閲嶈鎬с?br>鍗曞厓嫻嬭瘯璁捐錛?br>鎯充竴涓嬪紑鍙戝洟闃熶腑甯稿父鍑虹幇鐨勪竴縐嶅満鏅細紼嬪簭鍛樻鍦ㄤ嬌鐢―ebugger宸ュ叿嫻嬭瘯浠g爜銆傞噰鐢―ebugger宸ュ叿鍙互鍙互闅忔椂闅忓湴媯鏌ユ瘡涓彉閲忋傛姝ヨ窡韙紝媯鏌ュ彉閲忕殑鍊兼槸鍚﹀紓甯搞侱ebugger鏄竴縐嶅己鏈夊姏鐨勮皟璇曞伐鍏鳳紝浣嗘槸璋冭瘯閫熷害鐩稿綋鎱紝騫朵笖鍖呭惈涓嶅皯閿欒銆傚湪榪欑鎯呭喌涓嬭皟璇曟槸璁╀漢宕╂簝鐨勩傝繖浜涘鏉傛湁澶ч噺閲嶅鐨勯獙璇佹柟娉曟槸鍙互閫氳繃鑷姩鍖栫殑鎵嬫瀹屾垚鐨勶紝闇瑕佸仛鐨勬槸閫夋嫨鍚堥傜殑宸ュ叿騫剁紪鍐欏皯閲忎唬鐮併?br>涓嬮潰瑕佷粙緇嶇殑宸ュ叿鍙仛“鍗曞厓嫻嬭瘯妗嗘灦”錛屽熷姪榪欑宸ュ叿錛屽彲浠ラ氳繃緙栧啓涓浜涘皬鐨勬ā鍧楁潵瀹屾垚妯″潡錛堝彲浠ユ槸綾匯佸嚱鏁板拰搴擄級鐨勫崟鍏冩祴璇曘?br>涓嬮潰鏉ョ湅涓涓緥瀛愶細緙栧啓涓涓皬鐨勬ā鍧楋紝涓昏鍔熻兘鏄眰涓ゆ暟涔嬪拰銆傚叾C璇█浠g爜濡備笅錛?br>BOOL addition(int a, int b)<br>{<br>    return (a + b);<br>}<br>嫻嬭瘯鍗曞厓緙栧啓鎴愬彟澶栦竴涓ā鍧楋紙C鍑芥暟錛夈傝妯″潡嫻嬭瘯鎵鏈夊彲鑳界殑姹備袱鏁頒箣鍜岀殑緇勫悎錛岄氳繃榪斿洖True鎴朏alse鏉ュ垽鏂嫻嬫ā鍧楁槸鍚﹂氳繃浜嗘祴璇曘備唬鐮佸涓嬶細<br>BOOL additionTest()<br>{<br>    if ( addition(1, 2) != 3)<br>    {<br>        return (FALSE);<br>    }</p> <p>    if ( addition(0, 0) != 0)<br>    {<br>        return (FALSE);<br>    }</p> <p>    if ( addition(10, 0) != 10)<br>    {<br>        return (FALSE);<br>    }</p> <p>    if ( addition(-8, 0) != -8)<br>    {<br>        return (FALSE);<br>    }</p> <p>    if ( addition(5, -5) != 0)<br>    {<br>        return (FALSE);<br>    }</p> <p>    if ( addition(-5, 2) != -3)<br>    {<br>        return (FALSE);<br>    }</p> <p>    if ( addition(-4, -1) != -5)<br>    {<br>        return (FALSE);<br>    }</p> <p>    return (TRUE);<br>}<br>嫻嬭瘯鐨勬儏鍐靛寘鎷細<br>姝f暟+姝f暟<br>0+0<br>姝f暟+0<br>璐熸暟+0<br>姝f暟+璐熸暟<br>璐熸暟+姝f暟<br>璐熸暟+璐熸暟<br>姣忎竴嬈℃祴璇曢兘鏄氳繃瀵規瘮琚祴妯″潡鐨勮繑鍥炲煎拰鏈熸湜鍊鹼紝濡傛灉浜岃呬笉鍚岋紝榪斿洖FALSE銆傚鏋滄渶緇堣繑鍥濼RUE錛岃鏄庢ā鍧楅氳繃浜嗘墍鏈夌殑嫻嬭瘯銆?br>榪欎釜鐢ㄤ互嫻嬭瘯鍏朵粬妯″潡鐨勫皬妯″潡錛堝嚱鏁幫級琚О涓篢est Case, 鍏朵腑鍖呭惈浜嗙▼搴忓憳闇瑕佸琚祴鍗曞厓鐨勪竴緋誨垪媯鏌ャ傛瘡涓涓‘璁わ紙瀵硅嫻嬪崟鍏冪殑涓嬈¤皟鐢級閮藉繀欏誨拰琚祴鍗曞厓鐩稿搴斻傚湪榪欎釜渚嬪瓙涓紝媯鏌ヤ簡“姹傚拰鎿嶄綔”鍦ㄦ搷浣滄暟絎﹀彿涓嶅悓鐨勬儏鍐典笅鐨勮繍琛屾儏鍐點傚綋鐒朵簡錛岃繕闇瑕佸彟澶栧啓涓浜汿est Case鏉ラ獙璇佸叾浠栨儏鍐典笅鐨勮繍琛屾儏鍐點傛瘮濡傚叾浠栦竴浜涘父瑙佺殑鍔犳硶緇勫悎銆備緥瀛愬涓嬶細<br>int additionPropertiesTest()<br>{<br>    //conmutative: a + b = b + a<br>    if ( addition(1, 2) != addition(2, 1) )<br>    {<br> return (FALSE);<br>    }</p> <p>    //asociative: a + (b + c) = (a + b) + c<br>    if ( addition(1, addition(2, 3)) != addition(addition(2, 1), 3 ) )<br>    {<br> return (FALSE);<br>    }</p> <p>    //neutral element: a + NEUTRAL = a<br>    if ( addition(10, 0) != 10 )<br>    {<br> return (FALSE);<br>    }</p> <p>    //inverse element: a + INVERSE = NEUTRAL<br>    if ( addition(10, -10) != 0 )<br>    {<br> return (FALSE);<br>    }</p> <p>    return (TRUE);<br>}<br>涓婇潰鐨勪緥瀛愭祴璇曚簡澶氫釜鏁版嵁鐩稿姞欏哄簭涓嶅悓鐨勬儏鍐點?br>涓婅堪鐨勪袱涓猅est Case緇勬垚浜嗕竴涓猅est Suite錛孴est Suite鏄寚鐢ㄦ潵嫻嬭瘯鍚屼竴琚祴鍗曞厓鐨勪竴緇凾est Case銆?br>鍦ㄥ紑鍙戣嫻嬫ā鍧楁椂蹇呴』鍚屾椂緙栧啓榪欎簺Test Case鍜孴est Suite鐨勪唬鐮侊紝琚祴妯″潡鍙樻洿鏃訛紝瑕佸悓鏃跺彉鏇達紙鏈夋椂闇瑕佸鍔狅級鐩稿簲鐨凾est Case鍜孴est Suite銆?br>涓句緥鏉ヨ錛屽綋姹傚拰妯″潡鍗囩駭涓哄彲浠ュ灝忔暟姹傚拰鐨勬ā鍧楋紝灝卞繀欏誨彉鏇碩est Case鍜孴est Suite錛屽姞鍏ヨ濡俛ddDecimalNumbersTest涔嬬被鐨凾est Case銆?br>鏋侀檺緙栫▼寤鴻紼嬪簭鍛樺湪緙栧啓鐩爣妯″潡涔嬪墠灝卞紑鍙戝嚭鎵鏈夊崟鍏冩祴璇曚腑瑕佺敤鍒扮殑Test Case銆傚叾涓昏鐞嗙敱鏄細涓鏃︾▼搴忓憳澶勪簬寮鍙戣繃紼嬩箣涓紝閭d箞浠栧氨榪涘叆浜嗕竴涓寔緇敼榪涚殑闃舵錛屽繀欏誨悓鏃惰冭檻鍗曞厓妯″潡鍔熻兘銆侀渶瑕佸叕甯冪殑鎺ュ彛銆侀渶瑕佺粰鏂規硶浼犻掔殑鍙傛暟銆佸閮ㄨ闂佸唴閮ㄨ涓虹瓑絳夈傚湪緙栧啓鐩爣鍗曞厓涔嬪墠閫氳繃寮鍙慣est Case錛屽彲浠ュ闇瑕佽冭檻鐨勮繖浜涘洜绱犳湁鏇村ソ鐨勪簡瑙o紝榪欐牱緙栧啓鐩爣妯″潡涓庡叾浠栨柟娉曠浉姣旈熷害浼氭洿蹇紝浠g爜鐨勮川閲忎篃浼氭洿濂姐?br>姣忓綋寮鍙戝洟闃熼渶瑕佸彂甯冩柊鐗堟湰鐨勬椂鍊欙紝閮借榪涜褰誨簳鐨勫崟鍏冩祴璇曘傛墍鏈夌殑鍗曞厓蹇呴』閫氳繃鍗曞厓嫻嬭瘯錛岃繖鏍峰氨鍙互鍙戝竷鎴愬姛鐨勭増鏈傚鏋滄湁1涓垨浠ヤ笂鐨勫崟鍏冩病鏈夐氳繃鎵鏈夌殑嫻嬭瘯錛孊ug灝卞嚭鐜頒簡銆傞亣鍒拌繖縐嶆儏鍐靛氨闇瑕佸湪榪涜嫻嬭瘯錛屽鏋滈渶瑕佺殑璇濊繕闇瑕佸鍔犳柊鐨凾est Case錛屾鏌ュ彲浠ヤ嬌Bug鍐嶇幇鐨勬墍鏈夋儏鍐點傚鏋滄柊鐨凾est Case鍙互浣緽ug閲嶇幇錛屽氨鍙互淇榪欎釜Bug錛岀劧鍚庡啀榪涜嫻嬭瘯錛屽鏋滄ā鍧楅氳繃浜嗘祴璇曪紝灝卞彲浠ヨ涓築ug宸茬粡淇錛屽彲浠ュ彂甯冩柊鐨勬棤Bug鐗堟湰浜嗐?br>涓烘瘡涓涓彂鐜扮殑Bug娣誨姞鏂扮殑Test Case鏄緢鏈夊繀瑕佺殑錛屽洜涓築ug浼氬弽澶嶅嚭鐜幫紝褰撳叾閲嶅鍑虹幇鏃墮渶瑕佹湁鏁堢殑嫻嬭瘯鏉ユ嫻婤ug銆傝繖鏍風殑璇濓紝Test Bettery浼氶愭笎鑶ㄨ儉鐩磋嚦瑕嗙洊鎵鏈夌殑鍘嗗彶Bug鍜屾綔鍦ㄧ殑閿欒銆?br>嫻嬭瘯宸ュ叿錛?br>鏈変袱涓皬浼欏瓙錛屼竴涓彨Kent Beck錛屽彟涓涓彨Eric Gamma錛屼粬浠啓浜嗕竴緋誨垪鐨凧ava綾伙紝甯屾湜鍙互鎶婃祴璇曞仛鐨勫敖鍙兘鑷姩鍖栵紝騫剁О涔嬩負JUnit錛孞Unit浣挎暣涓崟鍏冩祴璇曠晫浜х敓鐨勫緢澶х殑闇囧姩銆傚叾浠栫殑寮鍙戣呬滑鎶奐Unit鐨勪唬鐮佺Щ妞嶅埌鍏朵粬璇█涓婏紝鏋勫緩浜嗕竴澶х郴鍒楃О涓簒Unit妗嗘灦鐨勪駭鍝併傚叾鎬誨寘鎷珻/C++鐨凜Unit鍜孋PPUnit錛孌elphi鐨凞Unit錛孷isual Basic鐨刅BUnit錛?NET騫沖彴涓婄殑NUnit錛岀瓑絳夈?br>鎵鏈夎繖浜涙鏋墮兘閲囩敤鍚屾牱鐨勮鍒欙紝瀵硅璦鐨勪緷璧栨у緢灝忥紝鐔熸倝鍏朵腑涓涓鏋跺氨鑳藉鐔熺粌搴旂敤鍏朵粬妗嗘灦銆?br>涓嬮潰瑕佽鐨勬槸濡備綍閫氳繃浣跨敤CPPUnit鏉ョ紪鍐欐祴璇曚唬鐮佸茍鎻愰珮鍗曞厓鐨勮川閲忋?br>CPPUnit閲囩敤闈㈠悜瀵硅薄鐨勭紪紼嬫柟娉曪紝涓棿浼氶亣鍒拌濡傚皝瑁呫佺戶鎵褲佸鎬佽繖浜涙蹇點傚彟澶栵紝CPPUnit閲囩敤C++ SEH錛圫tructured Exception Handling錛夛紝鎵浠ヨ繕浼氶亣鍒板紓甯哥殑姒傚康錛屼互鍙妕hrow, try, finally, catch榪欎簺鎸囦護銆?br>CPPUnit<br>姣忎竴涓猅est Case閮介渶瑕佸湪TestCase綾葷殑媧劇敓綾諱腑瀹氫箟銆俆estCase綾諱腑鍖呭惈浜嗚澶氬熀鏈殑鍔熻兘錛屾瘮濡傝繍琛屾祴璇曘佸湪Test Suite涓敞鍐孴est Case絳夈?br>姣斿鍦ㄩ渶瑕佸啓涓涓湪紓佺洏涓婂瓨鍌ㄦ暟鎹殑灝忔ā鍧楃殑鏃跺欙紝妯″潡錛堝畾涔変負DiskData綾伙級涓昏瀹炵幇涓や釜鍔熻兘錛氳鍙栨暟鎹拰瑁呰澆鏁版嵁銆備緥紼嬪涓嬶細<br>typedef struct _DATA<br>{<br>    int number;<br>    char string[256];<br>}DATA, *LPDATA;</p> <p>class DiskData<br>{<br>public:<br>    DiskData();<br>    ~DiskData();</p> <p>    LPDATA getData();<br>    void setData(LPDATA value);</p> <p>    bool load(char *filename);<br>    bool store(char *filename);</p> <p>private:<br>    DATA m_data;<br>};</p> <p>姝ゆ椂錛岄鍏堣鍋氱殑浜嬫儏涓嶆槸寮勬槑鐧戒笂闈㈢殑浠g爜鏄浣曞彉鍑烘潵鐨勶紝鑰屾槸瑕佺‘瀹氫笂闈㈡墍瀹氫箟鐨勭被鏄惁瀹屾垚浜嗚璁$殑鍏ㄩ儴鍔熻兘鈥斺旀紜湴璇誨彇鍜屽瓨鍌ㄦ暟鎹?/p> <p>涓烘錛岄渶瑕佽璁′竴涓柊鐨凾est Suite錛屽叾涓寘鍚袱涓猅est Case錛氫竴涓鍙栨暟鎹佷竴涓瓨鍌ㄦ暟鎹?/p> <p>浣跨敤CPPUnit</p> <p>鏈鏂扮増鏈殑CPPUnit鍙互鍦?a >http://cppunit.sourceforge.net/</a>涓婂厤璐逛笅杞藉埌錛屽叾涓寘鍚墍鏈夌殑搴撴枃浠躲佹枃妗c佷緥瀛愮▼搴忓拰鍏朵粬鏈夎叮鐨勭礌鏉愩?/p> <p>鍦╓in32鐜涓嬶紝鍙互鍦╒C++錛?.0鎴栨洿鏂扮増鏈級涓嬌鐢–PPUnit錛岀敱浜嶤PPUnit閲囩敤鐨勬槸ANSI C++錛屾墍浠ュ彲搴旂敤浜嶤++ Builder絳夊紑鍙戠幆澧冧腑鐨勭増鏈緝灝戙?br>鏋勫緩搴撴枃浠剁殑姝ラ鍙互鍦–PPUnit鍙戝竷鐗堟湰鐨処NSTALL-WIN32.txt鏂囦歡涓壘鍒般傛瀯<br>寤哄ソ搴撴枃浠朵箣鍚庡氨鍙互鐫鎵嬬紪鍐橳est Suite浜嗐?/p> <p>鍦╒C++涓嬬紪鍐欏崟鍏冩祴璇曠▼搴忕殑姝ラ濡備笅錛?br> 鍒涘緩涓涓熀浜嶮FC鐨勫璇濇搴旂敤紼嬪簭錛堟垨鑰呮枃妗e簲鐢ㄧ▼搴忥級<br> 寮鍚疪TTI:Project Settings -> C++ -> C++ Language<br> 鍦╥nclude鐩綍涓姞鍏PPUnit\include:Tools -> Options -> Directories -> Include<br> 榪炴帴cppunitd.lib(闈欐佽繛鎺?鎴栬卌ppunitd_dll.lib(鍔ㄦ佽繛鎺?錛宼estrunnerd.lib銆傚鏋滄槸鍦?#8220;Release”閰嶇疆涓嬬紪璇戯紝鍚屾牱闇瑕佽繛鎺ヨ繖浜涘簱鏂囦歡錛屽彧鏄渶瑕佹妸鍚嶇О涓殑“d”瀛楁瘝鍘繪帀銆?br> 鎷瘋礉testrunnerd.dll鏂囦歡鍒板彲鎵ц鏂囦歡澶圭殑涓嬮潰錛堟垨鑰呰礬寰勪笅鐨勫叾浠栨枃浠跺す涓級錛屽鏋滄槸鍔ㄦ佽繛鎺ョ殑璇濓紝榪橀渶瑕佹嫹璐漜ppunitd_dll.dll錛?#8220;Release”閰嶇疆涓嬮渶瑕佹嫹璐漷estrunner.dll鍜宑ppunit_dll.dll錛夈?/p> <p>閰嶇疆濂戒箣鍚庡嵆鍙互鐫鎵嬭繘琛屽崟鍏冩祴璇曠被緙栫爜浜嗐?/p> <p>寰呮祴璇曠殑DiskData綾伙紝涓昏瀹炵幇涓や釜鍔熻兘錛氳鍙栧拰瀛樺偍紓佺洏涓婄殑鏁版嵁銆傝嫻嬭瘯榪欎袱涓姛鑳斤紝闇瑕佷袱涓猅est Case錛氫竴涓礋璐h鍙栨暟鎹佷竴涓礋璐e瓨鍌ㄦ暟鎹?br>涓嬮潰鏄崟鍏冩祴璇曠被鐨勫畾涔夛細<br>#if !defined(DISKDATA_TESTCASE_H_INCLUDED)<br>#define DISKDATA_TESTCASE_H_INCLUDED</p> <p>#if _MSC_VER > 1000<br>#pragma once<br>#endif // _MSC_VER > 1000</p> <p>#include <cppunit/TestCase.h>//涓轟簡浠庡熀綾籘estCase媧劇敓鏂扮殑嫻嬭瘯綾?br>#include <cppunit/extensions/HelperMacros.h>//鏂逛究蹇熷畾涔夋祴璇曠被鐨勫畯</p> <p>#include "DiskData.h"</p> <p>class DiskDataTestCase : public CppUnit::TestCase<br>{<br>    CPPUNIT_TEST_SUITE(DiskDataTestCase);//瀹氫箟Test Suite鐨勮搗鐐?br> CPPUNIT_TEST(loadTest);//瀹氫箟Test Case<br> CPPUNIT_TEST(storeTest);<br>    CPPUNIT_TEST_SUITE_END();//瀹氫箟Test Suite鐨勭粓鐐?/p> <p>public:<br>    void setUp();<br>    void tearDown();</p> <p>protected:<br>    void loadTest();<br>    void storeTest();</p> <p>private:<br>    DiskData *fixture;<br>};</p> <p>#endif</p> <p>渚嬬▼涓紝DiskDataTestCase綾婚噸杞戒簡涓や釜鏂規硶錛歴etUp()鍜宼earDown()銆傝繖涓や釜鏂規硶鍦═est Case寮濮嬪拰緇撴潫鐨勬椂鍊欒嚜鍔ㄨ繍琛屻?/p> <p>嫻嬭瘯閫昏緫鏄湪涓や釜Protected鏂規硶涓疄鐜扮殑錛岀◢鍚庤娑夊強鍒板浣曚負嫻嬭瘯閫昏緫緙栫爜銆?nbsp;</p> <p>渚嬬▼鐨勬渶鍚庡畾涔変簡鎸囧悜DiskData綾誨瀷鏁版嵁鐨勬寚閽坒ixture錛岀敤浠ヤ繚瀛樻祴璇曡繃紼嬩腑鐨勭洰鏍囧璞°俿etUp()鏄垵濮嬪寲鍑芥暟錛屽湪璋冪敤姣忎竴涓猅est Case涔嬪墠璋冪敤setUp()錛屽悓鏃惰礋璐e垵濮嬪寲鐩爣瀵硅薄銆俆est Case榪愯榪囩▼涓浣跨敤fixture銆傚湪姣忎竴涓猅est Case榪愯緇撴潫涔嬪悗錛岃皟鐢╰earDown()閿姣乫ixture銆傝繖鏍鳳紝姣忔榪愯Test Case鏃舵墍浣跨敤鐨勯兘鏄柊浜х敓鐨刦ixture銆?/p> <p>嫻嬭瘯姝ラ濡備笅錛?br> 寮鍚祴璇曠▼搴?br> 鐐瑰嚮“Run”鎸夐敭<br> 璋冪敤setUp()鏂規硶錛氬垵濮嬪寲fixture<br> 璋冪敤絎竴涓猅est Case鍑芥暟<br> 璋冪敤tearDown()鏂規硶錛氶噴鏀緁ixture<br> 璋冪敤setUp()鏂規硶錛氬垵濮嬪寲fixture<br> 璋冪敤絎簩涓猅est Case鍑芥暟<br> 璋冪敤tearDown()鏂規硶錛氶噴鏀緁ixture <br> ...</p> <p>緇忚繃緙栫爜錛?br>#include "DiskDataTestCase.h"</p> <p>CPPUNIT_TEST_SUITE_REGISTRATION(DiskDataTestCase);</p> <p><br>void DiskDataTestCase::setUp()<br>{<br>    fixture = new DiskData();<br>}</p> <p>void DiskDataTestCase::tearDown()<br>{<br>    delete fixture;<br>    fixture = NULL;<br>}</p> <p><br>void DiskDataTestCase::loadTest()<br>{<br>    // our load test logic<br>}</p> <p><br>void DiskDataTestCase::storeTest()<br>{<br>    // our store test logic<br>}</p> <p>鐜板湪錛岀紪鐮佸凡緇忓彉寰楅潪甯哥畝鍗曚簡錛歴etUp()鍜宼earDown()瀹炵幇浜嗗垱寤恒侀噴鏀緁ixture錛屼笅闈㈣鍋氱殑灝辨槸涓簂oadTest()銆乻toreTest()緙栫爜浜嗐?/p> <p>Test Case緙栫爜</p> <p>鎼炴竻妤氶渶瑕佹祴璇曢偅浜涙柟闈箣鍚庣殑宸ヤ綔鏄紪鐮佸疄鐜般傚彲浠ラ氳繃浣跨敤搴撳嚱鏁般佺涓夋柟搴撳嚱鏁般乄in32 API鎴栬匔/C++鎿嶄綔絎﹀拰鎸囦護鐨勫唴閮ㄥ睘鎬с?/p> <p>鏈夋椂闇瑕佽緟鍔╃殑鏂囦歡鎴栬呮暟鎹簱琛ㄦ潵瀛樺偍姝g‘鐨勬暟鎹傚湪鏈緥涓紝閫氳繃瀵規瘮鍐呴儴涓嶆暟鎹拰澶栭儴鏂囦歡鐨勬暟鎹潵鍒ゆ柇緇撴灉鏄惁姝g‘銆?/p> <p>褰撳嚭鐜伴敊璇椂錛堟瘮濡傚唴閮ㄦ暟鎹拰澶栭儴鏁版嵁涓嶅悓錛夛紝闇瑕佹姏鍑哄紓甯搞傚彲浠ラ氳繃CPPUNIT_FAIL(message)瀹忓疄鐜幫紝涔熷彲浠ラ氳繃assertions瀹忓疄鐜般?br>浠ヤ笅鏄竴浜涘父鐢ㄧ殑assertion瀹?<br> CPPUNIT_ASSERT(condition): 媯鏌ondition錛屽涓篺alse錛屾姏鍑哄紓甯?br> CPPUNIT_ASSERT_MESSAGE(message, condition): 媯鏌ondition錛屽涓篺alse錛屾姏鍑哄紓甯革紝騫舵樉紺洪鍏堣瀹氱殑淇℃伅<br> CPPUNIT_ASSERT_EQUAL(expected,current): 媯鏌xpected涓巆urrent鐨勫兼槸鍚︾浉絳夛紝鎶涘嚭寮傚父錛屾樉紺篹xpected鍜宑urrent鐨勫?br> CPPUNIT_ASSERT_EQUAL_MESSAGE(message,expected,current): 媯鏌xpected鐨勫間笌actual鐨勫兼槸鍚︾浉絳夛紝鎶涘嚭寮傚父錛屾樉紺篹xpected,current鐨勫鹼紝騫舵樉紺洪鍏堣瀹氱殑淇℃伅<br> CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,current,delta): 媯鏌xpected, current涔嬪樊鏄惁灝忎簬delta錛屽鏋滀笉灝忎簬錛屾樉紺篹xpected鍜宑urrent鐨勫?/p> <p>涓嬮潰璁蹭竴涓媗oadTest緙栫爜鐨勭紪鐮佹瀯鎯籌細棣栧厛闇瑕佷竴涓閮ㄦ枃浠訛紝鍏朵腑瀛樺偍榪欎竴涓狣ATA鍨嬫暟鎹紝鏂囦歡鐨勫垱寤烘柟寮忓茍涓嶉噸瑕侊紝鍏抽敭鏄淇濊瘉閲岄潰鐨勬暟鎹殑姝g‘鎬с傜劧鍚庯紝瑕佽繘琛岀殑鎿嶄綔鏄鏌oad鍑芥暟浠庡閮ㄦ枃浠朵腑璇誨嚭鐨勬暟鎹拰瀹炵幇瀛樺湪鍏朵腑鐨勬暟鎹槸鍚︿竴鑷淬備唬鐮佸涓嬶細<br>//<br>// 鍓嶆彁錛氬閮ㄦ枃浠朵腑宸插瓨鍌ㄤ簡姝g‘鐨勬暟鎹?br>//<br>#define AUX_FILENAME    "ok_data.dat"<br>#define FILE_NUMBER    19<br>#define FILE_STRING    "this is correct text stored in auxiliar file"</p> <p>void DiskDataTestCase::loadTest()<br>{<br>    // 鐩稿璺緞杞寲涓虹粷瀵硅礬寰?br>    TCHAR    absoluteFilename[MAX_PATH];<br>    DWORD    size = MAX_PATH;</p> <p>    strcpy(absoluteFilename, AUX_FILENAME);<br>    CPPUNIT_ASSERT( RelativeToAbsolutePath(absoluteFilename, &size) );</p> <p>    // 鎵ц鎿嶄綔<br>    CPPUNIT_ASSERT( fixture->load(absoluteFilename) );</p> <p>    // 閫氳繃assertion媯鏌ヨ繍琛岀粨鏋?br>    LPDATA    loadedData = fixture->getData();</p> <p>    CPPUNIT_ASSERT(loadedData != NULL);<br>    CPPUNIT_ASSERT_EQUAL(FILE_NUMBER, loadedData->number);<br>    CPPUNIT_ASSERT( 0 == strcmp(FILE_STRING, <br>            fixture->getData()->string) );<br>}</p> <p>閫氳繃榪欐牱涓涓畝鍗曠殑Test Case嫻嬭瘯浜?涓彲鑳藉瓨鍦ㄧ殑閿欒錛?br> load鍑芥暟榪斿洖鍊?br> getData鍑芥暟榪斿洖鍊?br> number緇撴瀯鐨勬垚鍛樺?br> string緇撴瀯鐨勬垚鍛樺?br> <br>storeTest瑕佸鏉備竴浜涳紝鍥犱負闇瑕佹妸fixture涓殑鏁版嵁瀛樺偍鍒頒復鏃舵枃浠朵腑錛屼箣鍚庢墦寮涓や釜鏂囦歡錛堟柊鐨勪復鏃舵枃浠跺拰澶栭儴鏂囦歡錛夛紝璇誨嚭鏁版嵁騫舵瘮鐓у唴瀹廣備唬鐮佸涓嬶細</p> <p>void DiskDataTestCase::storeTest()<br>{<br>    DATA    d;<br>    DWORD   tmpSize, auxSize;<br>    BYTE    *tmpBuff, *auxBuff;<br>    TCHAR   absoluteFilename[MAX_PATH];<br>    DWORD   size = MAX_PATH;</p> <p>    // 濉厖緇撴瀯浣?br>    d.number = FILE_NUMBER;<br>    strcpy(d.string, FILE_STRING);</p> <p>    // 鐩稿璺緞杞寲涓虹粷瀵硅礬寰?/p> <p>    strcpy(absoluteFilename, AUX_FILENAME);<br>    CPPUNIT_ASSERT( RelativeToAbsolutePath(absoluteFilename, &size) );</p> <p>    // 鎵ц鎿嶄綔<br>    fixture->setData(&d);<br>    CPPUNIT_ASSERT( fixture->store("data.tmp") );</p> <p>    // 璇誨嚭涓ゆ枃浠剁殑鍐呭騫跺姣?br>    // ReadAllFileInMemory 鏄竴涓垎閰嶇紦鍐插尯鐨勫閮ㄥ嚱鏁?br>    // 鎶婃枃浠跺唴瀹瑰瓨鍏ュ叾涓? 璋冪敤鍑芥暟璐熻矗閲婃斁緙撳啿鍖?<br>    tmpSize = ReadAllFileInMemory("data.tmp", tmpBuff);<br>    auxSize = ReadAllFileInMemory(absoluteFilename, auxBuff);</p> <p>    // 鏂囦歡涓嶅瓨鍦ㄥ垯鎶涘嚭寮傚父<br>    CPPUNIT_ASSERT_MESSAGE("New file doesn't exists?", tmpSize > 0);<br>    CPPUNIT_ASSERT_MESSAGE("Aux file doesn't exists?", auxSize > 0);</p> <p>    // 鏂囦歡澶у皬鍙幏寰楋紝鍚﹀垯鎶涘嚭寮傚父<br>    CPPUNIT_ASSERT(tmpSize != 0xFFFFFFFF);<br>    CPPUNIT_ASSERT(auxSize != 0xFFFFFFFF);</p> <p>    // 緙撳啿鍖哄繀欏誨彲鐢紝鍚﹀垯鎶涘嚭寮傚父<br>    CPPUNIT_ASSERT(tmpBuff != NULL);<br>    CPPUNIT_ASSERT(auxBuff != NULL);</p> <p>    // 涓や釜鏂囦歡鐨勫ぇ灝忓繀欏誨拰DATA涓鑷?br>    CPPUNIT_ASSERT_EQUAL((DWORD) sizeof(DATA), tmpSize);<br>    CPPUNIT_ASSERT_EQUAL(auxSize, tmpSize);</p> <p>    // 涓ゆ枃浠剁殑鍐呭蹇呴』涓鑷?br>    CPPUNIT_ASSERT( 0 == memcmp(tmpBuff, auxBuff, sizeof(DATA)) );</p> <p>    delete [] tmpBuff;<br>    delete [] auxBuff;</p> <p>    ::DeleteFile("data.tmp");<br>}</p> <p>鍚姩鐢ㄦ埛鐣岄潰<br>鏈鍚庯紝鐪嬬湅濡備綍鏄劇ず鍩轟簬MFC鐨勭敤鎴風晫闈㈠璇濇錛堜簨鍏堝湪鍏跺唴閮ㄧ紪璇戜簡TestRunner.dll錛夈?/p> <p>鎵撳紑瀹炵幇綾葷殑鏂囦歡錛圥rojectNameApp.cpp錛夛紝鎶婁笅鍒椾唬鐮佸鍒跺埌InitInstance鏂規硶涓細<br>#include <cppunit/ui/mfc/TestRunner.h><br>#include <cppunit/extensions/TestFactoryRegistry.h></p> <p>BOOL CMy_TestsApp::InitInstance()<br>{<br>    ....</p> <p>    // 澹版槑Test Runner錛岀敤浠ユ敞鍐岀殑嫻嬭瘯濉叆鍏朵腑錛屽茍榪愯<br>    CppUnit::MfcUi::TestRunner runner;</p> <p>    runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );</p> <p>    runner.run();    </p> <p>    return TRUE;<br>}<br> <br>寰堢畝鍗曪紝涓嶆槸鍚楋紵鍙渶瑕佸畾涔変竴涓?runner"瀹炰緥錛屾坊鍔犳敞鍐岃繃鐨則est錛坱est鏄氳繃CPP鏂囦歡涓殑CPPUNIT_TEST_SUITE_REGISTRATION瀹忔敞鍐岀殑錛夛紝灝卞彲浠ヨ繍琛宺un鍑芥暟浜嗐?/p> <p>緙栬瘧銆佽繍琛岋紝寮濮嬩綘鐨勫崟鍏冩祴璇曞惂:)</p> <img src ="http://www.shnenglu.com/leetaolion/aggbug/24882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/leetaolion/" target="_blank">鍒涘緩鏇村ソ鐨勮В鍐蟲柟妗?/a> 2007-05-26 10:53 <a href="http://www.shnenglu.com/leetaolion/archive/2007/05/26/24882.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.lalaazg.cn" target="_blank">久久精品aⅴ无码中文字字幕重口</a>| <a href="http://www.ab91.cn" target="_blank">日韩精品无码久久一区二区三</a>| <a href="http://www.7lcd2h2.cn" target="_blank">久久无码专区国产精品发布</a>| <a href="http://www.lyscpf.cn" target="_blank">欧美日韩成人精品久久久免费看</a>| <a href="http://www.myloveshop.com.cn" target="_blank">久久久久人妻精品一区三寸蜜桃</a>| <a href="http://www.rydtw.cn" target="_blank">九九精品久久久久久噜噜</a>| <a href="http://www.jumbo8.cn" target="_blank">东方aⅴ免费观看久久av</a>| <a href="http://www.zhchengzhi.cn" target="_blank">国产午夜福利精品久久2021</a>| <a href="http://www.rnsqwp.cn" target="_blank">韩国三级中文字幕hd久久精品</a>| <a href="http://www.rnif.cn" target="_blank">久久国产精品波多野结衣AV</a>| <a href="http://www.sfwan.cn" target="_blank">亚洲国产精品无码成人片久久</a>| <a href="http://www.jkzk.com.cn" target="_blank">国产精品美女久久久</a>| <a href="http://www.gaomiren.cn" target="_blank">中文字幕久久精品</a>| <a href="http://www.sxstreet.cn" target="_blank">中文字幕一区二区三区久久网站</a>| <a href="http://www.mbjywz.cn" target="_blank">亚洲精品乱码久久久久久蜜桃</a>| <a href="http://www.lutengjiaju.cn" target="_blank">综合网日日天干夜夜久久</a>| <a href="http://www.hg795.cn" target="_blank">91麻豆精品国产91久久久久久</a>| <a href="http://www.zzdls.cn" target="_blank">久久久这里有精品</a>| <a href="http://www.dafa888da.cn" target="_blank">国产成人综合久久久久久</a>| <a href="http://www.dgchengxin.cn" target="_blank">一本色综合网久久</a>| <a href="http://www.e-ben.cn" target="_blank">综合久久给合久久狠狠狠97色</a>| <a href="http://www.90key.cn" target="_blank">99久久这里只有精品</a>| <a href="http://www.f1-zone.cn" target="_blank">国产69精品久久久久APP下载</a>| <a href="http://www.sobseo.cn" target="_blank">99久久免费只有精品国产</a>| <a href="http://www.ysmyy.com.cn" target="_blank">少妇内射兰兰久久</a>| <a href="http://www.ampv.cn" target="_blank">欧美亚洲国产精品久久高清 </a>| <a href="http://www.kxw1.cn" target="_blank">国产精品久久一区二区三区</a>| <a href="http://www.vdmo.cn" target="_blank">伊人久久无码精品中文字幕</a>| <a href="http://www.port1.com.cn" target="_blank">亚洲午夜久久久精品影院</a>| <a href="http://www.t1303.cn" target="_blank">久久国产色AV免费看</a>| <a href="http://www.liaojieta.cn" target="_blank">久久久久av无码免费网</a>| <a href="http://www.ixlg.cn" target="_blank">香蕉久久影院</a>| <a href="http://www.kavpojie.cn" target="_blank">亚洲日本久久久午夜精品</a>| <a href="http://www.hvnm.cn" target="_blank">久久精品亚洲乱码伦伦中文</a>| <a href="http://www.sdlove.cn" target="_blank">91久久九九无码成人网站</a>| <a href="http://www.ndtym.cn" target="_blank">99久久免费只有精品国产</a>| <a href="http://www.4neq.cn" target="_blank">91精品国产91久久久久久青草</a>| <a href="http://www.pu1166.cn" target="_blank">久久99精品国产</a>| <a href="http://www.lcvy.cn" target="_blank">免费观看久久精彩视频</a>| <a href="http://www.bainiu168.cn" target="_blank">青青青伊人色综合久久</a>| <a href="http://www.dgyjte580.cn" target="_blank">91精品国产色综久久</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>