您的位置:首页 > 编程语言 > C语言/C++

CxxTest使用简介 ——VS2008中使用C++单元测试框架

2010-03-17 00:40 417 查看
一.概述

对于单元测试框架,Java有JUnit,.Net平台有NUnit,而C++项目可以选择CppUnit、Boost::test、CppTest、CxxTest、TUT等。我最近在VS2008中使用CxxTest,感觉比较方便。
CxxTest是SourceForge上一款开源的C++单元测试框架,不需要RTTI、成员模板函数、异常处理、及其他外部的库(内存管理、文件/Console
IO、图形库等)。需要两样东西:一个现代的C++编译器、Perl或者Python任选其一。

二.原理

CxxTest首先通过动态语言Perl或者Python分析测试源文件(*.h或者*.cpp),从中抽取测试方法,生成TestSuite文件(runner.cpp);然后Build为测试程序(runner.exe);再执行测试程序。测试结果有简易的UI界面进行显示,比较直观,同时还将信息输出到Console。

三.使用说明

1.下载

访问CxxTest主页下载最新版本。

2.配置环境

(1)保存

把下载好的CxxTest解压后放在磁盘某个路径下(如:”C:/cxxtest”)
(2)追加环境变量

”CXXTESTDIR=C:/cxxtest”(CxxTest解压路径)
(3)安装Python
访问Python主页,很崩溃现在主页能访问,下载页面打不开,从这里下载吧。
安装后追加环境变量:”PYTHON=C:/Python26/python.exe”(Python.exe路径)。

3.导入工程

导入VS2008的解决方案sln中

将CxxTest的文件夹中sample/msvc/路径下的三个工程文件CxxTest_1_Run、CxxTest_2_Build和CxxTest_3_Generate导入sln中(注意,会要求工程转换,选择执行转换)。
导入之后的解决方案的结构如下:
MySolution
|----
MyProject // 待测工程
|----
CxxTest_3_Generate // 动态生成TestSuite测试文件(runner.cpp)
|----
CxxTest_2_Build // 编译runner.cpp生成测试程序(runner.exe)
|----
CxxTest_1_Run // 执行runner.exe
此时执行Build Solution可能会报一些编译错误:
fatal error U1050: Please fix CXXTESTDIR	…/makefile	11	CxxTest_1_Run
fatal error U1050: Please fix CXXTESTDIR	…/makefile	11	CxxTest_3_Generate
fatal error U1050: You must define PERL or PYTHON …/makefile	20 CxxTest_1_Run
fatal error U1050: You must define PERL or PYTHON …/makefile	20 CxxTest_3_Generate

说明环境变量没有起作用。打开测试工程中的makefile文件(CxxTest_3_Generate与CxxTest_1_Run引用的是同一个文件),修改(追加)以下代码:
# Where the CxxTest distribution is unpacked
CXXTESTDIR       = C:/cxxtest
# Where Python is installed
PYTHON           = C:/Python26/python.exe

4. 编写第一个测试用例

比如待测工程中有源文件MyMath.cpp,我们要测其中的Add函数:
int Add(int a, int b)
{
return a + b;
}

(1)追加测试文件

在测试工程CxxTest_3_Generate中追加测试文件TestMyMath.h(此处建立.h或.cpp文件均可),文件内容如下:
// TestMyMath.h
#include <cxxtest/TestSuite.h>
#include "../MyProject/MyMath.cpp"
class TestMyMath : public CxxTest::TestSuite
{
public:
void testAdd( void )
{
TS_ASSERT_EQUALS(Add(2, 3), 5);
}
};

(2)指定测试文件搜索路径

打开测试工程中的makefile文件,将第一个变量TESTS修改为测试文件的路径(
ot;font-family: mceinline;">TestMyMath.h所在路径)。
# Where to look for the tests
TESTS            = ./*.h

(3)测试工程Build
测试工程CxxTest_3_Generate执行Build(生成runner.cpp)。

测试工程CxxTest_2_Build执行Build(生成runner.exe),如果出现如下编译错误:
fatal error C1083: Cannot open include file: 'cxxtest/TestListener.h': No such file or directory  …/msvc/runner.cpp	9  CxxTest_2_Build

则打开CxxTest_2_Build的工程属性 -> 配置属性 -> C/C++ -> 一般 -> 追加包含路径(Additional include
Directories),添加上CxxTest的保存路径(C:/cxxtest)即可。
(4)执行测试程序
测试工程CxxTest_1_Run执行Build(即执行runner.exe),将看到测试UI界面绿色进度条一闪而过,测试通过。

如果通过Console执行runner.exe,还将看到测试的统计结果输出。

四.其他

未完待续…

参考资料:
CxxTest主页:http://sourceforge.net/projects/cxxtest/
《CxxTest User’s
Guide》(CxxTest用户手册): http://cxxtest.sourceforge.net/guide.html
《CxxTest初探》:http://blog.csdn.net/complayer/archive/2007/01/05/1474641.aspx
《CxxTest使用指南(入门篇)》:http://hi.baidu.com/gengshenspirit/blog/item/8fbff13f9e5de7ca7c1e716c.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: