cppunit测试工具的使用方法步骤

来源:互联网 发布:js基本类型和引用类型 编辑:程序博客网 时间:2024/04/28 22:48
 
一、CppUnit编译。
(到http://sourceforge.net/projects/cppunit/中下载CppUnit测试框架的解压文件)
1、在 src/目录下, 将 CppUnitLibraries.dsw 工程文件用 vc 打开,点组建,然后再点批组建,会出现如下的对话框,只选win32Debug,不要选unicode,如下图所示,生成的库文件将被拷贝到lib 目录下。

 

图片

 2、设置头文件和库文件路径,选择 工具/选项/目录,在 目录下的Includefiles 和Libraryfiles 中分别添加文件所在的路径,再保存空间,如下图所示

 

图片

 

图片

二、初始CppUnit测试环境

1、进入example文件夹,用VC 打开examples.dsw。

2、右键点击CppUnitTestApp,将CppUnitTestApp工程设为活动工程(Win32Debug),编译后运行,是基于GUI 方式进行单元测试TestRunner的界面。如图所示:出现绿色条表示编译成功

 

图片

 

3、将CppUnitTestMain工程设置为活动工程(Win32Debug),编译并运行,是基于文本方式的单元测试环境。

图片

 

 4、将HostApp 工程设置为活动工程(Win32Debug),编译运行。出现红条表示编译没通过,有错误

图片

三、CppUnitDemoFactorial构建步骤

1、新建一个基于对话框的工程CppUnitDemoFactorial,可编译运行。

2、设置工程属性:工程->设置->选C++->C++语言->允许允许时间类型信息(RTTI)如下图所示:

图片

3、设置工程属性:工程->设置->连接->对象/库模块->   然后在左上角选win32 Debug,填入:cppunitd.libtestrunnerd.lib。在左上角选择Win32Release,填入:cppunit.libtestrunner.lib。(注意:工程属性设置完毕后,要SaveWorkspace。可编译运行)如下图所示:

 

图片

 

图片

4、将Factorial.cpp 和Factorial.h添加至当前的工程中,具体操作如下:点新建->新建文见->选第三个新建头文件,文件名为Factorial.h,再新建文件这次选第四个,文件名为Factorial.cpp ,分别在Factorial.h和Factorial.cpp中添加如下代码。计算阶乘。

   在Factorial.h中添加

#include"stdafx.h"
int Factorial(int n);

 

  在Factorial.cpp中添加

#include"Factorial.h"
#include "stdafx.h"

int Factorial(int n)
{
 int result = 1;
 for (int i = 1; i <= n; i++)
 {
  result *= i;
 }
 
 return result;
}

编译会出现以下错误:factorial.cpp(15):fatalerrorC1010:unexpectedendoffile while lookingforprecompiledheaderdirective
图片

其解决方法为:设置工程属性:工程->设置->C++->预编译的头文件->不使用预补偿页眉。如下图所示:工程属性设置完毕后,要SaveWorkspace。可编译运行。

图片

图片

5、新建类:CFactorialTestCase,派生于CppUnit::TestCase。具体步骤为:右键单击CppUnitDemoFactorial  classes选new class。如下图所

示:

图片

6、在CFcatorialTestCase中添加成员函数:voidfactorialTest()。具体步骤为:右键单击CFcatorialTestCase选第二项。如图:

图片

 7、在void CFactorialTestCase::factorialTest()中添加函数体,代码如下:

void CFactorialTestCase::factorialTest()

CPPUNIT_ASSERT_EQUAL(2,Factorial(2));
 CPPUNIT_ASSERT_EQUAL(1,Factorial(0));
 CPPUNIT_ASSERT_EQUAL(6,Factorial(3));

 8、在CFactorialTestCase类的定义头文件中,添加:

class CFactorialTestCase : public CppUnit::TestCase 
{
 CPPUNIT_TEST_SUITE(CFactorialTestCase);
 CPPUNIT_TEST(factorialTest);
 CPPUNIT_TEST_SUITE_END();

public:
 void factorialTest();
 CFactorialTestCase();
 virtual ~CFactorialTestCase();

};

 9、在FactorialTestCase.h中,添加头文件:

      #include<cppunit/TestCase.h>
#include<CppUnit/extensions/HelperMacros.h>
#include"Factorial.h"

10、在FactorialTestCase.cpp 中,添加如下代码,添加在#endif后:

CPPUNIT_TEST_SUITE_REGISTRATION(CFactorialTestCase);

11、在CppUnitDemoFactorial.cpp 中添加:

BOOL CCppUnitDemoFactorialApp::InitInstance()
{
 AfxEnableControlContainer();

    CppUnit::MfcUi::TestRunner runner;
    runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
    runner.run();
    return TRUE;

 // Standard initialization
 // If you are not using these features and wish to reduce the size
 //  of your final executable, you should remove from the following
 //  the specific initialization routines you do not need.

......

......

}

12、在CppUnitDemoFactorial.cpp 中添加头文件:

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

13、编译执行将会弹出如下所示的对话框,这表明编译成功

图片

在执行过程中可能遇到的问题及解决办法:

1、运行后可以弹出对话框,但是在选了Browse后再点Run ,既不出现红色也不出现绿色,没有反应。其原因是没有执行第三大步骤中的第10小步,没有调用CFactorialTestCase函数

 2、运行后可以弹出对话框,但是在选了Browse后再点Run 后出现的是红色,表明编译有错误

图片

查看对话框中的错误提示,找到出错的地方进行改正在编译,如上图,本来在进行阶乘计算的过程中期望得到的结果为2,但是实际结果确实一个负数,这有可能是在执行第三大步骤的第7小步时添加的代码中的数值有错,重新检查再编译

 

3、若出现如下的错误提示:c:\documents and settings\赤脚丫\桌面\cppunitdemofactorial\factorialtestcase.h(12) : fatal error C1083: Cannot open include file: 'cppunit/TestCase.h': No such file or directory则有可能是你在第一大步骤中的第2小步或者是你在第二大步骤中的第3小步没有做好,重新检查这俩个步骤