亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > cppUnit
用CPPUnit做單元測試
作者:網絡轉載 發布時間:[ 2013/3/4 16:11:41 ] 推薦標簽:

通過這樣一個簡單的Test Case測試了4個可能存在的錯誤:
 load函數返回值
 getData函數返回值
 number結構的成員值
 string結構的成員值
 
storeTest要復雜一些,因為需要把fixture中的數據存儲到臨時文件中,之后打開兩個文件(新的臨時文件和外部文件),讀出數據并比照內容。代碼如下:

void DiskDataTestCase::storeTest()
{
    DATA    d;
    DWORD   tmpSize, auxSize;
    BYTE    *tmpBuff, *auxBuff;
    TCHAR   absoluteFilename[MAX_PATH];
    DWORD   size = MAX_PATH;

    // 填充結構體
    d.number = FILE_NUMBER;
    strcpy(d.string, FILE_STRING);

    // 相對路徑轉化為路徑

    strcpy(absoluteFilename, AUX_FILENAME);
    CPPUNIT_ASSERT( RelativeToAbsolutePath(absoluteFilename, &size) );

    // 執行操作
    fixture->setData(&d);
    CPPUNIT_ASSERT( fixture->store("data.tmp") );

    // 讀出兩文件的內容并對比
    // ReadAllFileInMemory 是一個分配緩沖區的外部函數
    // 把文件內容存入其中. 調用函數負責釋放緩沖區.
    tmpSize = ReadAllFileInMemory("data.tmp", tmpBuff);
    auxSize = ReadAllFileInMemory(absoluteFilename, auxBuff);

    // 文件不存在則拋出異常
    CPPUNIT_ASSERT_MESSAGE("New file doesn't exists?", tmpSize > 0);
    CPPUNIT_ASSERT_MESSAGE("Aux file doesn't exists?", auxSize > 0);

    // 文件大小可獲得,否則拋出異常
    CPPUNIT_ASSERT(tmpSize != 0xFFFFFFFF);
    CPPUNIT_ASSERT(auxSize != 0xFFFFFFFF);

    // 緩沖區必須可用,否則拋出異常
    CPPUNIT_ASSERT(tmpBuff != NULL);
    CPPUNIT_ASSERT(auxBuff != NULL);

    // 兩個文件的大小必須和DATA一致
    CPPUNIT_ASSERT_EQUAL((DWORD) sizeof(DATA), tmpSize);
    CPPUNIT_ASSERT_EQUAL(auxSize, tmpSize);

    // 兩文件的內容必須一致
    CPPUNIT_ASSERT( 0 == memcmp(tmpBuff, auxBuff, sizeof(DATA)) );

    delete [] tmpBuff;
    delete [] auxBuff;

    ::DeleteFile("data.tmp");
}

啟動用戶界面
后,看看如何顯示基于MFC的用戶界面對話框(事先在其內部編譯了TestRunner.dll)。

打開實現類的文件(ProjectNameApp.cpp),把下列代碼復制到InitInstance方法中:
#include <cppunit/ui/mfc/TestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>

BOOL CMy_TestsApp::InitInstance()
{
    ....

    // 聲明Test Runner,用以注冊的測試填入其中,并運行
    CppUnit::MfcUi::TestRunner runner;

    runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );

    runner.run();   

    return TRUE;
}
 
很簡單,不是嗎?只需要定義一個"runner"實例,添加注冊過的test(test是通過CPP文件中的CPPUNIT_TEST_SUITE_REGISTRATION宏注冊的),可以運行run函數了。

上一頁1234下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 国产综合在线视频 | 亚洲精品视频在线 | 黄色免费网站观看 | 日本黄色片网站 | 欧美日韩麻豆 | 中文亚洲日韩欧美 | 久久天天躁夜夜躁狠狠躁2019 | 成年男人午夜片免费观看 | 日韩综合一区 | 国产精品一区视频 | 亚洲无线一二三四区 | 影音先锋天堂网 | 天堂在线视频精品 | 成人毛片手机版免费看 | 欧美性xxxxx极品视频 | 欧美色图亚洲图片 | 丁香天堂 | 日韩免费专区 | 一区二区三区四区欧美 | 成人免费播放 | 欧美色亚洲图 | 青青草成人免费 | 日日干狠狠操 | 国产一区二区三区免费在线观看 | 亚洲成人免费网址 | 欧美人与性禽xxxx | 欧美精品亚洲精品日韩专区va | 国产一级aaa全黄毛片 | 亚洲欧美日韩中文字幕在线一 | 涩涩福利网址导航 | 欧美日韩一区视频 | 在线免费观看亚洲视频 | free性欧美人另类 | 一二三四在线视频播放社区 | 久久久久成人精品免费播放动漫 | a一级日本特黄aaa大片 | 91精品国产91久久久久青草 | 在线成人免费观看国产精品 | 午夜国产精品理论片久久影院 | 国产亚洲新品一区二区 | 人人做人人澡人人人爽 |