软件测试实验学习笔记系列4--CppUnit

发表于:2013-8-07 11:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:xiajian2010    来源:51Testing软件测试网采编

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

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号