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一下,可以看到没有报错了。然后可以继续下去了。如果嫌源代码安装的方式太过于繁琐,尤其是出了问题之后。