• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              4 隨筆 :: 3 文章 :: 1 評論 :: 0 Trackbacks
            轉自:  csdn

            fiftymetre(50米深藍)


            關于測試驅動開發,     C++的庫比較多,   選擇是一個問題.  
               
              Boost.Test是一個用于C++開發的測試框架,   類似的還有CPPUnit,   個人認為,   CPPUnit過多的照搬了JUnit的框架,   有比較濃厚的Java風格,   用起來總感覺有些束縛,   不是那么native.    
               
              CXXTest   我用過Symbian版本的,   好像需要Perl,   不過Symbian本身安裝的時候就需要Perl,   因此對于Symbian上來說還是無所謂,而且使用Perl可以免除一些套路代碼的編寫.   (題外話,   Symbian啥都要,   裝個Symbian   C++   SDK還要JDK1.3.2,   不知道開發J2ME是否需要安裝一個GCC?   )   .    
               
              Boost.Test可以以#include一行代碼的代價實現一個test-case的編寫,   就測試來說,   越簡單就可以越使得開發者愿意使用,    
              比起繼承一個基類,   覆蓋其中的一個虛擬函數來說,   Boost.Test在某些情況下就顯得十分方便了.    
               
              下面是一個Hello,world般的測試例子:   測試你的系統是否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     就是我前面說的一行代碼的代價  
              #2     main當然已經被Boost.Test接管了,   我們就用test_main,   等著被調用.  
              #3     測試宏,   要求1   ==   2   .   當然會報錯  
              #4     按照C的傳統,   如果我們的test_main函數返回非0的值也是一個錯誤.    
              #5     異常逃出test_main外也是錯誤,   當然這句并不會執行.   舉個例子而已.  
               
               
              然后編譯運行,   例如使用VC,   那么  
               
              cl.exe     /GX   /ID:/boost   hello.cpp    
               
              D:/boost是我的Boost安裝路徑.   然后運行hello.exe,   結果應該不出意外是報錯2個.   指出文件名,   行號等.   例如  
               
              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  
               
               
              一個是#3的錯誤,   一個是#4的   .    
               
              這是最簡單的情況,   適用于測試不多的情形,   如果測試比較多,   那么就應該將Boost.Test編譯成一個Lib,   然后Link到這個Lib上,    
              而不是每次都整個編譯一次Boost.Test,   這樣可以節約編譯的時間(   主要花費在#1處).    
               
              配合Boost.Build中的Bjam也是一個好主意. 

            posted on 2010-01-26 19:47 白宇皓 閱讀(218) 評論(0)  編輯 收藏 引用
            岛国搬运www久久| 国产精品久久波多野结衣| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久亚洲精精品中文字幕| 九九久久99综合一区二区| 久久久WWW成人免费毛片| 久久人人爽人人人人片av| 日本精品久久久久中文字幕| 波多野结衣久久| 精品久久久久久久| 麻豆精品久久久久久久99蜜桃| www.久久99| 国产精品成人久久久| 91精品国产高清久久久久久91| 久久精品人人做人人爽电影| 久久精品国产91久久麻豆自制| 精品多毛少妇人妻AV免费久久| 精品午夜久久福利大片| 无码精品久久久天天影视| 无码8090精品久久一区| 久久精品国产亚洲麻豆| 久久久噜噜噜久久熟女AA片| 亚洲国产精品成人AV无码久久综合影院| 久久99精品国产99久久| 久久午夜无码鲁丝片| 伊人久久无码中文字幕| 久久久www免费人成精品| 色狠狠久久综合网| 无码国内精品久久人妻麻豆按摩| 久久AⅤ人妻少妇嫩草影院| 91精品无码久久久久久五月天| 国产99久久精品一区二区| 2020久久精品国产免费| 国产成人久久精品区一区二区| 国内精品久久久久久久97牛牛| 久久精品aⅴ无码中文字字幕重口| 伊人久久大香线蕉av不变影院| 欧美国产成人久久精品| 亚洲AV无一区二区三区久久 | 久久亚洲天堂| 一本大道加勒比久久综合|