不倦的候鸟成长日记

——候鸟,候补的菜鸟也
随笔 - 6, 文章 - 0, 评论 - 5, 引用 - 0
数据加载中……

CxxTest使用指南(入门篇)

 

CxxTest使用指南(入门篇)

准备工作:

1、 安装perl/Python

2、 下载解压CxxTest

3、 设置环境变量:

如果使用Perl,则设置一个名为PERL的环境变量,值为perl.exe的位置。(比如D:\Perl\Bin\Perl.exe);

如果安装Python,则设置一个名为PYTHON的环境变量,值为你安装的Python目录下的python.exe路径(比如D:\Python25\python.exe);

设置一个名为CXXTESTDIR 的环境变量,值为CxxTest解压后的目录。(比如D:\Cxxtest)。(设置CXXTESTDIR的原因:免去每次在makefile文件中指定CXXTESTDIR的目录)

 

方式一:使用CxxTest \sample\msvc中的框架

1、 拷贝msvc文件夹到工程目录中

打开CxxTest_Workspace.sln,可以看到三个项目:

- CxxTest_3_Generate 运行 cxxtestgen.pl 生成 runner.cpp 文件;

- CxxTest_2_Build 编译生成的runner.cpp文件;

- CxxTest_1_Run 运行测试;

2、 修改其中的makefile文件:

1)将以下内容:

# Where to look for the tests

TESTS            = ..\gui\*.h ..\*.h

修改为:

# Where to look for the tests

TESTS            = *.h

这段话的作用是查找测试文件,我们的测试文件是.h格式的,放在当前目录下。(如果是.hpp格式的话,自然改成*.hpp;放在其它目录的话,还要修改路径)

2)将以下内容删除:

# Where the CxxTest distribution is unpacked

CXXTESTDIR       = ..\..

因为先前已经定义了CXXTESTDIR的环境变量,这里的定义可以省掉。

3、 CxxTest_3_Generate项目中添加测试文件

这是测试文件的一个简单的例子:

// Sampletest.h

#include <cxxtest/TestSuite.h>

//定义一个测试套件类,将测试用例放入其中

class SampletestSuite : public CxxTest::TestSuite   

{

public:

     //定义测试,以test作为测试函数前缀,

     //这是cxxtestgen.plcxxtestgen.py对测试文件进行扫描,抽取测试用例的依据

     void testMultiplication( void )   

     {

         TS_ASSERT_EQUALS( 2 * 2, 5 );

     }

};

4、 运行测试,即生成CxxTest_1_Run,可在输出窗口看到测试结果,并双击结果行可定位到源代码。

 

方法二:简化msvc,将GenerateBuildRun集成到一个项目中

1、 在工程中添加新项目:Unit_Test

将修改后的makefile文件拷贝到Unit_Test目录中。

2、 Unit_Test项目源文件中添加新建项dummy

无论添加进来的是.cpp,还是.h,将后缀名去掉。

右击dummy,选择属性,在弹出的属性页中,“自定义生成步骤”选项->“命令行”选项,输入:

ECHO Don't Delete this file!!! > Dummy

ECHO -

ECHO -

ECHO -------------------- Generating test cases --------------------

if exist runner.cpp del runner.cpp /Q

NMAKE runner.cpp /nologo

ECHO -

ECHO –

 

在“输出”选项中输入:

Runner.cpp

 

Dummy只是一个文件,里边可以是任何内容,关键点在于对Dummy文件进行编译的时候所执行的操作,这是一个批处理文件,这个批处理文件执行生成 testcase 的操作,也就是调用Python/Perl生成测试用例(也就是runner.cpp文件)。为了保持每次编译都可以生成新的runner文件,就必须保证

1Dummy文件在runner.cpp之前进行编译;

2Dummy文件每次都必须被重新编译。 

第一点是通过文件顺序来的,第二点是在生成事件里边重新生成Dummy文件来保证的(VS2005似乎没问题,VC6似乎还是有些问题的)。

从另外一个角度讲,这个Dummy文件相当于 samples/msvc 第一和第二个项目的功能。(即GenerateBuild

 

3、 编译dummy文件,生成runner.cpp,将其添加到Unit_Test“源文件”中。

确定当前目录中已有.h测试文件,否则可能提示错误。

4、 右击Unit_Test,选择属性,在弹出来的属性页中, “生成事件”选项->“生成后事件选项->“命令行”选项中输入:

ECHO -

ECHO -

ECHO -------------------- Running Unit Test Cases --------------------

$(OutDir)\$(TargetName).exe

ECHO -

ECHO -

ECHO -------------------------------------------------------------------------------

DEL runner.cpp

 

放在项目“生成后事件”中的这一段命令,运行生成的测试,相当于samples/msvc 第三个项目的功能。(即Run

 

5、 Unit_Test“头文件”中,添加新的.h测试文件。

生成Unit_Test,即可在输出窗口分割线下看到运行测试的结果,双击结果行可以定位到源代码。

如:

1>-------------------- Running Unit Test Cases --------------------

1>Running 1 test

1>In MathsTestSuite::testMultiplication:

1>f:\test\cxxunittest\cxxunittest\sampletest.h(9): Error: Expected (2 * 2 == 5), found (4 != 5)

1>Failed 1 of 1 test

1>Success rate: 0%

1>----------------------------------------------------------------------------------

 

方法三:抽取出一个Unit_Test文件夹

所谓方法三,不过是将方法二中的Unit_Test文件夹,替代方法一中的msvc文件夹,移动到其它的项目中使用而已。

不像方法一的msvc那样需要三个项目,也不需像方法二那样,每次都修改dummy,和项目属性,添加命令行。将Unit_Test文件夹各个属性都配置好之后,独立出来随时备用。

 

准备工作,如前所言。

要进行测试时:

Unit_test文件夹拷贝放到工程目录中,在工程中添加里面的Unit_Test项目,仿照Sampletest.h写自己的测试文件。

运行测试时:

先编译dummy,再生成该测试项目。(如果没有另外添加*.h文件,直接生成就可以了)

posted on 2007-08-31 18:42 不倦 阅读(6123) 评论(1)  编辑 收藏 引用 所属分类: C++单元测试框架

评论

# re: CxxTest使用指南(入门篇)[未登录]  回复  更多评论   

請問CxxTest哪裡有CxxTest_Workspace.sln檔案,只有VC6的版本.dsw,如果要自己用.sln,.proj的專案設定要怎麼設定? 謝謝
2010-12-09 20:12 | Peter

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理