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解压后放在磁盘某个路径下(如:”C:/cxxtest”)
(2)追加环境变量
”CXXTESTDIR=C:/cxxtest”(CxxTest解压路径)
(3)安装Python
访问Python主页,很崩溃现在主页能访问,下载页面打不开,从这里下载吧。
安装后追加环境变量:”PYTHON=C:/Python26/python.exe”(Python.exe路径)。
将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可能会报一些编译错误:
说明环境变量没有起作用。打开测试工程中的makefile文件(CxxTest_3_Generate与CxxTest_1_Run引用的是同一个文件),修改(追加)以下代码:
(1)追加测试文件
在测试工程CxxTest_3_Generate中追加测试文件TestMyMath.h(此处建立.h或.cpp文件均可),文件内容如下:
(2)指定测试文件搜索路径
打开测试工程中的makefile文件,将第一个变量TESTS修改为测试文件的路径(
ot;font-family: mceinline;">TestMyMath.h所在路径)。
(3)测试工程Build
测试工程CxxTest_3_Generate执行Build(生成runner.cpp)。
测试工程CxxTest_2_Build执行Build(生成runner.exe),如果出现如下编译错误:
则打开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
对于单元测试框架,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
相关文章推荐
- C++单元测试工具CppUnit使用简介 【转载】
- Google C++单元测试框架GoogleTest---Google Mock简介--概念及基础语法
- 如何使用VS2013本地C++单元测试框架
- 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用
- Google C++单元测试框架GoogleTest---TestFixture使用
- C++单元测试工具CppUnit使用简介
- C++单元测试工具CppUnit使用简介 【转载】
- C++单元测试框架Gtest的配置与使用过程
- Google的开源C++单元测试框架Google Test使用教程
- Google开源C++单元测试框架Google Test(gtest)在C++Builder(xe5)下的使用-1
- Linux c++ 测试框架 gtest使用简介
- VS2015 使用微软自带的单元测试框架测试本地C++代码的注意事项
- 使用VS2008自带的单元测试组件来测试纯c++程序
- C++单元测试工具CppUnit使用简介
- c++单元测试框架Gtest的简单配置与使用
- Google C++单元测试框架---Gtest框架简介(译文)
- 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用
- 开源C++单元测试框架Google Test的简单使用
- Google-S2 空间索引框架简介及部分API使用示例
- 使用C++构建嵌入式开发框架