CxxTest使用指南(入门篇)

来源:互联网 发布:mac adb环境变量配置 编辑:程序博客网 时间:2024/05/16 09:04

 

准备工作:

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 : publicCxxTest::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文件,直接生成就可以了)