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
#include
#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
#include
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小步没有做好,重新检查这俩个步骤