我對CPPUNIT的一些理解

2021-04-03 01:13:07 字數 1630 閱讀 2360

一、測試用例

1、cppunit通常用於介面測試,如果進行路徑測試,需要考慮一些特殊問題,因為可能需要訪問被測類的保護或者私有成員。在這種情況下,可以考慮使用輔助類,輔助類從被測類派生,並將測試類宣告為友元。

2、測試類從testfixture派生,該類宣告了setup(),teardown()函式,分別進行過載以用來初始化測試和釋放資源

3、在測試類的標頭檔案類宣告中使用以下巨集進行宣告測試套件

cppunit_testsuite(測試類名)

cppunit_test(測試函式名1)

cppunit_test(測試函式名2)

cppunit_test_suite_end()

以上**將測試函式準備好,測試函式原型為:void testx()

4、測試套件註冊使用以下巨集

cppunit_test_suite_named_registration(類名,名字空間)

cppunit_test_suite_registration(類名)

以上兩個巨集在測試類的cpp檔案開頭新增,第乙個巨集將測試類註冊到「名字空間」裡,「名字空間」是乙個字串

第二個巨集將測試類註冊到預設名字空間裡

5、cpp的實現,以下例子是乙個測試函式的實現,完成的是路徑測試,其中ctest_cbackupsource從testfixture派生

void ctest_cbackupsource::testmakesourcename()

二、執行測試用例

//返回測試工廠物件的引用,預設引數為「all tests」,對應於註冊在預設空間的測試類,在以後測試執行時,註冊在預設空間的測試用例將被執行

cppunit_ns::testfactoryregistry ®istry = cppunit_ns::testfactoryregistry::getregistry();

//新增命名空間後,註冊在該命名空間的測試用例將被執行

registry.addregistry("cbackupsource");

// registry.addregistry("cversioninfo");

// registry.addregistry("cshfile");

// 得到測試套件,包括所有選擇的測試空間內註冊的測試用例

cppunit_ns::test* suite = registry.maketest();

cppunit_ns::textui::testrunner runner;

runner.addtest(suite);

// 設定輸出,注意物件被runner釋放

runner.setoutputter(new cppunit_ns::compileroutputter(&runner.result(), std::cerr));

// 增加***,eventmanager返回testresult類的物件,維護乙個listener集合,listener將決定測試過程表現,包括日誌輸出格式

cppunit_ns::brieftestprogresslistener progress;

runner.eventmanager().addlistener(&progress);

nretcode = runner.run();

對Linux inode的一些理解

檔名 inode device block 一 inode是什麼?理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次...

對棧的一些理解

之前總結過一篇有關函式棧幀的部落格 函式棧幀以及呼叫約定相關的一些總結 但是感覺自己還是有一點知識點沒有弄懂,今天中午跟郭哥吃過飯一起 有關殼的問題的時候,順便把這個問題請教了一下郭哥,終於弄明白了,在此要特地感謝他,這裡把一些心得體會寫出來 先看一幅圖 選自ida權威指南 注意圖中是基於esp的棧...

對EK的一些理解

首先是網路流問題的提出 乙個源點,乙個匯點,不斷又源點向匯點輸送,其中路徑上有最大速度,求匯點收貨的最大速度是多少。在求之前可以先模擬一下過程如果源點現在只能出乙個單位的貨,那麼他會找乙個未達到最大速度的路進行運輸,接著我們不斷將運輸的量放大,即不斷地從起點開始尋找增廣路,每次都對其進行增廣,直到源...