• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            walt

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              4 隨筆 :: 3 文章 :: 1 評(píng)論 :: 0 Trackbacks
            轉(zhuǎn)自:  csdn

            fiftymetre(50米深藍(lán))


            關(guān)于測(cè)試驅(qū)動(dòng)開(kāi)發(fā),     C++的庫(kù)比較多,   選擇是一個(gè)問(wèn)題.  
               
              Boost.Test是一個(gè)用于C++開(kāi)發(fā)的測(cè)試框架,   類(lèi)似的還有CPPUnit,   個(gè)人認(rèn)為,   CPPUnit過(guò)多的照搬了JUnit的框架,   有比較濃厚的Java風(fēng)格,   用起來(lái)總感覺(jué)有些束縛,   不是那么native.    
               
              CXXTest   我用過(guò)Symbian版本的,   好像需要Perl,   不過(guò)Symbian本身安裝的時(shí)候就需要Perl,   因此對(duì)于Symbian上來(lái)說(shuō)還是無(wú)所謂,而且使用Perl可以免除一些套路代碼的編寫(xiě).   (題外話(huà),   Symbian啥都要,   裝個(gè)Symbian   C++   SDK還要JDK1.3.2,   不知道開(kāi)發(fā)J2ME是否需要安裝一個(gè)GCC?   )   .    
               
              Boost.Test可以以#include一行代碼的代價(jià)實(shí)現(xiàn)一個(gè)test-case的編寫(xiě),   就測(cè)試來(lái)說(shuō),   越簡(jiǎn)單就可以越使得開(kāi)發(fā)者愿意使用,    
              比起繼承一個(gè)基類(lèi),   覆蓋其中的一個(gè)虛擬函數(shù)來(lái)說(shuō),   Boost.Test在某些情況下就顯得十分方便了.    
               
              下面是一個(gè)Hello,world般的測(cè)試?yán)?   測(cè)試你的系統(tǒng)是否1等于2   (玩笑)  
               
              #include   <boost/test/included/test_engine_monitor.hpp>                             #1  
               
              int   test_main(int   ,   char   *[])                             #2  
              {  
                    BOOST_CHECK_EQUAL(1   ,   2);                           #3  
                    return   1;                                                               #4  
                    throw   "Ooops..";                                                 #5  
              }  
               
               
              #1     就是我前面說(shuō)的一行代碼的代價(jià)  
              #2     main當(dāng)然已經(jīng)被Boost.Test接管了,   我們就用test_main,   等著被調(diào)用.  
              #3     測(cè)試宏,   要求1   ==   2   .   當(dāng)然會(huì)報(bào)錯(cuò)  
              #4     按照C的傳統(tǒng),   如果我們的test_main函數(shù)返回非0的值也是一個(gè)錯(cuò)誤.    
              #5     異常逃出test_main外也是錯(cuò)誤,   當(dāng)然這句并不會(huì)執(zhí)行.   舉個(gè)例子而已.  
               
               
              然后編譯運(yùn)行,   例如使用VC,   那么  
               
              cl.exe     /GX   /ID:/boost   hello.cpp    
               
              D:/boost是我的Boost安裝路徑.   然后運(yùn)行hello.exe,   結(jié)果應(yīng)該不出意外是報(bào)錯(cuò)2個(gè).   指出文件名,   行號(hào)等.   例如  
               
              hello.cpp(7):   error   in   "test_main_caller(   argc,   argv   )":   check   1   ==   2   failed   [1   !=   2]  
               
              D  
               
              :/boost/boost/test/impl/test_main.ipp(39):   error   in   "test_main_caller(   argc,   argv   )":   check   test_main_result   ==   0   ||   test_main_result   ==   boost::exit_success   failed  
               
               
              一個(gè)是#3的錯(cuò)誤,   一個(gè)是#4的   .    
               
              這是最簡(jiǎn)單的情況,   適用于測(cè)試不多的情形,   如果測(cè)試比較多,   那么就應(yīng)該將Boost.Test編譯成一個(gè)Lib,   然后Link到這個(gè)Lib上,    
              而不是每次都整個(gè)編譯一次Boost.Test,   這樣可以節(jié)約編譯的時(shí)間(   主要花費(fèi)在#1處).    
               
              配合Boost.Build中的Bjam也是一個(gè)好主意. 

            posted on 2010-01-26 19:47 白宇皓 閱讀(218) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            精品国产乱码久久久久久郑州公司| 国产精品免费看久久久香蕉| 亚洲乱码日产精品a级毛片久久| 日日狠狠久久偷偷色综合0| 国内高清久久久久久| 国内精品久久久久久野外| 国产成人久久777777| 中文字幕日本人妻久久久免费| 久久精品国产免费一区| 久久这里只精品99re66| 国产91色综合久久免费| 久久久久亚洲av毛片大| 久久久精品人妻一区二区三区蜜桃| 久久久久亚洲精品男人的天堂| 性欧美丰满熟妇XXXX性久久久 | 四虎国产精品免费久久5151| 亚洲国产成人久久综合一区77| 91精品国产综合久久婷婷| 色婷婷久久久SWAG精品| 亚洲欧美日韩精品久久| 国产午夜免费高清久久影院| 久久综合色老色| 青青热久久国产久精品 | 国产三级观看久久| 久久影院综合精品| 久久久久久精品免费看SSS| 久久中文字幕无码专区| 久久AⅤ人妻少妇嫩草影院| 亚洲国产精久久久久久久| 国内精品人妻无码久久久影院| 亚洲中文字幕久久精品无码喷水| 亚洲色欲久久久久综合网| 久久亚洲欧洲国产综合| 久久九九免费高清视频| 精品久久久久久无码中文字幕 | 一本久道久久综合狠狠爱| 亚洲精品99久久久久中文字幕| 久久久久一本毛久久久| 思思久久99热免费精品6| 伊人久久无码精品中文字幕| 欧洲性大片xxxxx久久久|