天天看点

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 子类。

继续阅读