CppUnit單元測(cè)試工具
CppUnit也是對(duì)xUnit家族中的一個(gè)成員,C++語言實(shí)現(xiàn)的一個(gè)單元測(cè)試的框架,Micheal Feathers由JUnit移植過來了,GNULGPL條約。
CppUnit按照層次來管理測(cè)試,底層的是TestCase,當(dāng)有了幾個(gè)TestCase以后,可以將它們組織成TestFixture。在TestFixture中,可以建立被測(cè)試的類的實(shí)例,并編寫TestCase對(duì)類實(shí)例進(jìn)行測(cè)試,多個(gè)TestFixture可以通過TestSuite來對(duì)測(cè)試進(jìn)行管理。
通過派生TestFixture類來設(shè)計(jì)某個(gè)類或某組相關(guān)功能的單元測(cè)試,F(xiàn)ixture定義公共函數(shù)setUp()初始化每個(gè)成員變量,tearDown()來釋放setUp中使用的資源。在每個(gè)測(cè)試中,CPPUNIT_ASSERT(bool)來判斷某個(gè)函數(shù)和表達(dá)式的正確性,在派生類的聲明中,通過CPPUNIT_TEST來增加對(duì)應(yīng)的測(cè)試函數(shù),通過CPPUNIT_TEST_SUITE和CPPUNIT_TEST_SUITE_END來分裝所有的測(cè)試函數(shù),規(guī)定這些測(cè)試函數(shù)執(zhí)行的順序.
1 CppUnit單元測(cè)試環(huán)境的建立
1.1 在Linux下安裝
方法1:
在使用Ubuntu軟件庫中編譯好的了的庫文集和文檔,一條命令解決問題:
sudo apt-get install libcppunit-dev libcppunit-doc 參考[1]
參考[2]介紹了一個(gè)有意思的東西,build-essential(包括libc6.so,libc6-dev.so,gcc以及make等工具),如果沒有這個(gè)基本包的話,使用源代碼安裝編譯時(shí),./configure部分會(huì)報(bào)錯(cuò)。
方法2-使用源代碼編譯
CppUnit的官方網(wǎng)站:http://sourceforge.net/projects/cppunit/files/cppunit/
源代碼可以在官方網(wǎng)站上下載上下載,新CppUnit的版本是1.12.1(從官方網(wǎng)站上來看,這個(gè)版本是2008年2月20更新的,5年過去了都沒有更新,所以我做了一個(gè)CppUnit1.12.1的源碼包網(wǎng)盤的公開鏈接: http://pan.baidu.com/share/link?shareid=1903199222&uk=556148328
tar-xzf cppunit-1.12.1.tar.gz
cd cppunit-1.12.1
./configure
make
make check
sudo make install
本來沒有什么好說的,關(guān)鍵是出了點(diǎn)問題,在使用make時(shí)報(bào)錯(cuò)了。錯(cuò)誤如下:
/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -ldl -o DllPlugInTester DllPlugInTester.o CommandLineParser.o ../../src/cppunit/libcppunit.la -lm
mkdir .libs
g++ -g -O2 -o .libs/DllPlugInTester DllPlugInTester.o CommandLineParser.o -ldl ../../src/cppunit/.libs/libcppunit.so -lm
../../src/cppunit/.libs/libcppunit.so: undefined reference to `dlsym'
../../src/cppunit/.libs/libcppunit.so: undefined reference to `dlopen'
../../src/cppunit/.libs/libcppunit.so: undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
make[2]: *** [DllPlugInTester] Error 1
make[2]: Leaving directory `/home/xc-pc/software/cppunit-1.12.1/src/DllPlugInTester'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/xc-pc/software/cppunit-1.12.1/src'
make: *** [all-recursive] Error 1
也不知道是因?yàn)樽约旱淖约旱乃惭b的CppUnit的版本的問題還是其他的問題。(看起來這個(gè)錯(cuò)誤夠嚇人,對(duì)比到CppUnit的Makefile文件有800多行,會(huì)覺得出個(gè)錯(cuò)誤沒什么)
解決方案:
從上面的出現(xiàn)的錯(cuò)誤可以看出,是cppunit-1.12.1/src/DllPlugInTester目錄下編譯發(fā)生了錯(cuò)誤,也是說是那個(gè)目錄下的Makefile出了問題,cd 到cppunit-1.12.1/src/DllPlugInTester目錄,使用vi(或者其他的編輯器,如emacs,gedit)打開Makefile.找到LIBS= -lm,將LIBS= -lm 改為LIBS= -lm -ldl
需要進(jìn)行相應(yīng)的修改的還有cppunit-1.12.1/examples/simple目錄下的Makefile文件.
至此,再重新make一下,可以看到?jīng)]有報(bào)錯(cuò)了。然后可以繼續(xù)下去了。如果嫌源代碼安裝的方式太過于繁瑣,尤其是出了問題之后。