CppUnit單元測試工具
CppUnit也是對xUnit家族中的一個成員,C++語言實現的一個單元測試的框架,Micheal Feathers由JUnit移植過來了,GNULGPL條約。
CppUnit按照層次來管理測試,底層的是TestCase,當有了幾個TestCase以后,可以將它們組織成TestFixture。在TestFixture中,可以建立被測試的類的實例,并編寫TestCase對類實例進行測試,多個TestFixture可以通過TestSuite來對測試進行管理。
通過派生TestFixture類來設計某個類或某組相關功能的單元測試,Fixture定義公共函數setUp()初始化每個成員變量,tearDown()來釋放setUp中使用的資源。在每個測試中,CPPUNIT_ASSERT(bool)來判斷某個函數和表達式的正確性,在派生類的聲明中,通過CPPUNIT_TEST來增加對應的測試函數,通過CPPUNIT_TEST_SUITE和CPPUNIT_TEST_SUITE_END來分裝所有的測試函數,規定這些測試函數執行的順序.
1 CppUnit單元測試環境的建立
1.1 在Linux下安裝
方法1:
在使用Ubuntu軟件庫中編譯好的了的庫文集和文檔,一條命令解決問題:
sudo apt-get install libcppunit-dev libcppunit-doc 參考[1]
參考[2]介紹了一個有意思的東西,build-essential(包括libc6.so,libc6-dev.so,gcc以及make等工具),如果沒有這個基本包的話,使用源代碼安裝編譯時,./configure部分會報錯。
方法2-使用源代碼編譯
CppUnit的官方網站:http://sourceforge.net/projects/cppunit/files/cppunit/
源代碼可以在官方網站上下載上下載,新CppUnit的版本是1.12.1(從官方網站上來看,這個版本是2008年2月20更新的,5年過去了都沒有更新,所以我做了一個CppUnit1.12.1的源碼包網盤的公開鏈接: 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
本來沒有什么好說的,關鍵是出了點問題,在使用make時報錯了。錯誤如下:
/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
也不知道是因為自己的自己的所安裝的CppUnit的版本的問題還是其他的問題。(看起來這個錯誤夠嚇人,對比到CppUnit的Makefile文件有800多行,會覺得出個錯誤沒什么)
解決方案:
從上面的出現的錯誤可以看出,是cppunit-1.12.1/src/DllPlugInTester目錄下編譯發生了錯誤,也是說是那個目錄下的Makefile出了問題,cd 到cppunit-1.12.1/src/DllPlugInTester目錄,使用vi(或者其他的編輯器,如emacs,gedit)打開Makefile.找到LIBS= -lm,將LIBS= -lm 改為LIBS= -lm -ldl
需要進行相應的修改的還有cppunit-1.12.1/examples/simple目錄下的Makefile文件.
至此,再重新make一下,可以看到沒有報錯了。然后可以繼續下去了。如果嫌源代碼安裝的方式太過于繁瑣,尤其是出了問題之后。