摘要: 无论你是否采用测试驱动开发(TDD),编写Unit test case都是重要的工作.在项目的各个阶段,我们都需要构建测试、运行测试、报告测试结果. 有很多框架为这个工作提供便利,比如大名鼎鼎的xUnit系列.今天,我准备介绍的是一个轻量级的C++ Unit Test框架:TUT (Template Unit Tests的缩写) 大家第一个想问的问题估计就是:它和CppUnit有什么不同? 它有什么特点? 我觉得最关键的地方在于TUT是一个轻量级的框架,TUT是使用template技术写的,完全没有macro. 除去例子,它的代码一共只有两个头文件.我们完全不用build这个框架然后设置编译连接那么多麻烦,只要在编写Unit test的时候,把这两个头文件拷贝到项目目录或者设置一下头文件的包含路径就可以了. TUT把Unit test case通过group-test的层次组织,用户可以把相似的test case放到同一个group,这个group有一个唯一的名字, group包含多个test, 包含的test数量取决于你的编译器允许的template嵌套深度.用户可以选择运行所有的测试或者只是部分group,甚至部分test. 在每个test里面,你可以使用TUT提供的一些方法来确认测试结果的正确性,告诉TUT这个测试是成功还是失败. 闲话少说,估计大家喜欢眼见为实,让我们写个例子来看看: 1. 首先包含必要的头文件#include <stdio.h>#include "tut.h"#include "tut_reporter.h" 2. 接着写了一个测试class //测试类,做的事情很简单,记住给它的最大的数字,我们就测试这个类class max_pool{ int m_max;public: max_pool(int x=5) : m_max(x){ printf("%s init max num %d\n", __func__, x); } void try_set_value(int num) { if (num>m_max) m_max = num; } int get_max() { return m_max; }}; 3. 写关于test group的代码 /*这个类用在test_basic里面, 我们可以用它来完成一些每个test都需要做的初始化和清理工作, 不过这里只是为了说明, 只是输出点文字*/class obj_init{ public: obj_init() { printf( "obj_init for each test\n"......[
阅读全文]