天天看點

CppUnit學習筆記

今天是五一勞動節,為了不為全國人民添堵,本人還是決定宅在家裡學點東西。

c++裡的單元測試工具我接觸過的有boost_unit,gtest。

本人深知單元測試的重要性與tdd(測試驅動開發)的思想。是以,測試工具對我而言開發利器。我們必須要掌握其中的一門。

聽說cppunit的相容性比較好,于是部落客就頗有興趣地學習了一下cppunit的使用。

網上的資料很多,已有很多牛人已做了分享。

本人參照上面的示例自己嘗試做了一遍。

首先是安裝cppunit。本人的系統是centos,就直接用yum安裝使是。

<a href="http://my.oschina.net/hevakelcj/blog/408858#">?</a>

1

<code>sudo</code> <code>yum </code><code>install</code> <code>cppunit-devel</code>

也可以選擇下載下傳源碼安裝。步驟大緻都是:解壓縮,./configure,make,sudo make install。

安裝完成之後,在 /usr/include 路徑下會多一個 cppunit 目錄,這就是cppunit的頭檔案所在處。在 /usr/lib/ 路徑下有 libcppunit-1.12.so.1      libcppunit-1.12.so.1.0.0  libcppunit.so 3個檔案。

我們在連結的時候,一定要記得加 -lcppunit 項。

編輯檔案:mathtest.h

編譯檔案:testmain.cpp

編譯指令:

執行結果:

總結:

在這個例程中,我們自定義了 cppunit::testfixture 子類 mathtest 。在mathtest可選擇性地定義 setup() 與 teardown() 

還需要手動将其加入到 testsuite對象中去。将 testsuite對象加入到testrunner中才能進行測試。

要添加一個測試,需要改testmain.cpp檔案。這樣的測試架構不易維護。

cppunit 一定考慮到了lession-1的問題,并提供了許多宏定義,使我們的測試代碼更可讀。如下是示例:

編輯檔案:demotest.h

編輯檔案:demotest.cpp

編輯檔案:testmain.cpp

我想,其大概的原理就是在 cppunit_test_suite_registration(testdemo) 宏中就定義了一個全局的 testdemo 對象,在該 testdemo 的構造函數中 将自己添加到了 單例 cppunit::testfactoryregistry 中。是以在 main() 函數中調用 cppunit::testfactoryregistry::getregistry() 時就可以獲得所有我們自己定義的 cppunit::testfixture 子類。

繼續閱讀