CPPUNIT使用说明

CPPUNIT使用说明

    台:    winxpVS2005

编写日期             2010-07-22

 

 

第一步:下载

CPPUNIT的主页是http://sourceforge.net/projects/cppunit/

(或者http://download.csdn.net/source/2568414),从这里可以获取它的源代码cppunit-1.12.1.tar

 

第二步:解压

解压 cppunit-1.12.1.tar.gzC:/cppunit-1.12.1或自己想要的目录(在此我放到F:/test下),如图:

 

第三步:

打开src/CppUnitLibraries.sln(有的下面是src/CppUnitLibraries.dsw),如果是VC 7及以上版本,会有一个对话框询问是否将工程转换成更高版本,选择“Yes to all”进行转换,如图:

第四步:

找到src/msvc6/DSPlugIn下的StdAfx.h文件,将#error This add-in is for VC++ 6.0 only.注释掉

 

第五步:

选择“Build | Batch Build...”,选中所有的项目,点击build按钮。在lib下生成所需要的所有库文件debug下)如图:

注:链接过程中会报错:

  error C3505: cannot load type library '{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}'

  出错的文件是:src/msvc6/testrunner/MsDevCallerListCtrl.cpp。这是由于使用VC 8.0编译的缘故,需要修改一下它的源码,打开该文件,找到出错行(#67),将其替换为:

  #if _MSC_VER >= 1400 // VC++ 8 or more

  //The following #import imports EnvDTE based on its LIBID.

  #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids

  //The following #import imports EnvDTE80 based on its LIBID.

  #import "libid:1A31287A-4D7D-413e-8E32-3B374931BD89" version("8.0") lcid("0") raw_interfaces_only named_guids

  #else // vc7

  #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids

#endif

修改后重新编译。

第六步:

includelib文件夹加入到VC++的环境中。打开:Tools|Options|Projects and Solutions|VC++ Directories,将这两个文件夹的路径分别加入到Include filesLibrary files中。最好再将lib文件夹加入到系统环境变量PATH中,这样就不用再将其中的动态链接库拷到工程目录下而直接运行单元测试了。至此,CPPUnit的编译安装就完成了。

如图:

第七步:

下载 CPPUnitProjectWizard  http://cppunit.sourceforge.net/cppunit-wiki/CppUnitVisualStudio2005Wizard?action=AttachFile&do=get&target=CPPUnitProjectWizard.7z(注:这个网址应经不能用了,在网上查了很久都没找到),建议到这下载:http://download.csdn.net/source/2568419

第八步:

CPPUnitProjectWizard.vsdir - 为向导命名

CPPUnitProjectWizard.vsz - VS知道从哪里找到向导

Visual Studio 2005安装目录下的 VCProjects 文件夹中,… /VC/vcprojects下。  

第九步:

把整个CPPUnitProjectWizard解决方案文件夹复制到您的Visual Studio 8安装目录下的VCWizards文件夹中。如图:

  比如,我放在…/VC/VCWizards

或者,也可以放在你想放置的其它地方,然后编辑CPPUnitProjectWizard.vsz,定义参数 ABSOLUTE_PATH

Param="ABSOLUTE_PATH = …VC/VCWizards/ CPPUnitProjectWizard"

第十步:

配置环境变量

右键我的电脑—>属性à高级—>环境变量àPath  加上lib的路径,我的为E:/cppunitspace/cppunit/lib

 

 

 

此时我们的环境就配置好了!接下来我们写一个例子:

 

第一步:

打开vs2005,新建一个MFC的项目名为:TestCppUnit如图:

点击ok后弹出界面,勾选如图:

Finish。此时项目建立好了。

第二步:

打开TestCppUnit.cpp文件,增加包含文件和声明使用库代码

#include <cppunit/ui/mfc/TestRunner.h>

#include <cppunit/extensions/TestFactoryRegistry.h>

#pragma comment(lib, "cppunitd.lib")

#pragma comment(lib, "testrunnerud.lib")

如图:

注:如果为Release版本声明使用库文件为

#pragma comment(lib, "cppunit.lib")

#pragma comment(lib, "testrunner.lib")

第三步:

找到InitInstance()函数:注释掉一下代码:

     CTestCppUnitDlg dlg;

     m_pMainWnd = &dlg;

     INT_PTR nResponse = dlg.DoModal();

     if (nResponse == IDOK)

     {

         // TODO: Place code here to handle when the dialog is

         //  dismissed with OK

     }

     else if (nResponse == IDCANCEL)

     {

         // TODO: Place code here to handle when the dialog is

         //  dismissed with Cancel

     }

增加一下代码:

CPPUNIT_NS::MfcUi::TestRunner runner;

 

     runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );

 

     runner.run();

如图:

第四步:

编译运行出现如下图界面,此时未加任何用例的单元测试例子界面就出来了:

第五步:

添加测试代码

a)             添加一个c++example,其基类是public CPPUNIT_NS::TestFixture

    

 

b)             修改example.h

如下:

#pragma once

#include <cppunit/extensions/HelperMacros.h>

#include <cppunit/TestFixture.h>

 

class example :public CPPUNIT_NS::TestFixture

{

  CPPUNIT_TEST_SUITE(example);

  CPPUNIT_TEST_SUITE_END();

public:

  example(void);

  ~example(void);

 

};

 

    

c)             修改example.c

如下:

#include "stdafx.h"

#include "example.h"

 

CPPUNIT_TEST_SUITE_REGISTRATION(example);

 

example::example(void)

{

 

}

example::~example(void)

{

 

}

    

 

d)             此时,编译运行,可以发现出现了测试包example

e)        添加测试包初始化、结束函数setUp,tearDown(注意大小写)。以及添加测试用例testcase1,testcase2

 

         说明,每一个用例,都会调用setUptearDown

     故而上述运行结果应该是:按出现顺序。

f)        添加其他用例

              CPPUNIT_ASSERT是一个宏,判断后面的参数是否正确,CPPUNIT还有很多宏,如

              CPPUNIT_ASSERT(condition)                      // 确信condition为真

              CPPUNIT_ASSERT_MESSAGE(message, condition)     // condition为假时失败, 并打印message

              CPPUNIT_FAIL(message)                          // 当前测试失败, 并打印message

              CPPUNIT_ASSERT_EQUAL(expected, actual)         // 确信两者相等

              CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual) // 失败的同时打印message

              CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actual, delta)   // expectedactual之间差大于delta时失败

g)             单元测试结果

              假如测试中所有断言都通过,则结果为绿色。

             

              假如由一个断言失败,则显示红色,下面显示出错位置,且双击可以找到源代码位置。

添加其他测试代码

 

 

 

 

 

 

你可能感兴趣的:(单元测试,测试,dialog,include,library,envdte)