VS2005下CPPUNIT的测试框架搭建全过程

写在引言之前:

网上这方面的资料参差不齐,有的还有错误(诸如路径),始终没有完全解决我的CPPUNIT测试框架搭建的问题,如果你也遇到了,那么或许本文会有点帮助。


引言:

在公司有软件测试项目,但是不能把工作拿回家做。要在自己的笔记本上搭建CPPUNIT框架环境,还真是花费了好长时间。下面将以最全最简单的方式介绍本次从零搭建的全过程。水平有限,仅限参考。


一、准备工作:

1、VS2005肯定要安装,这个自行解决。

2、下载且仅下载cppunit 1.12.1,但不用下载CPPUnitProjectWizard。自行下载,或尝试文末的下载链接。


二、CPPUNIT的编译、生成

1、将下载好的压缩包解压缩,比如本文压缩到D:\cppunit-1.12.1。在cppunit-1.12.1\src目录下,有VS工程CppUnitLibraries.dsw,双击打开之,出现版本转换对话框,选择“全是”。



2、打开工程后,红框中选择Debug(这样是防止Lib中生成出现多余的文件),然后在左侧中5个红框中的项目右键->重新生成解决方案。可以逐个项目右键->重新生成解决方案,也可以将DSPPlugIn移除之后,在解决方案上右键->重新生成解决方案。本文采用后者。cppunit-1.12.1\lib不编译DSPPlugIn是因为编译有错误,也没有必要编译。



生成解决方案之后,提示是5个成功生成:


可以看到cppunit-1.12.1\lib文件夹下多出来几个文件,而且都是刚刚生成的,


至此,CPPUNIT准备完毕!不必设置什么麻烦的环境变量和CPPUnitProjectWizard!


三、VS2005工程搭建


这里有个一定需要注意的地方:在VS2005,选择新建->项目,不能选择常规->空项目!笔者就是因为开始选择常规->空项目,导致出现不能Debug的情况,而且怎么都搜不到解决办法,浪费了一天的时间!


1、在VS2005中选择新建->项目,在Visual C++下面选择Win32-> Win32 控制台应用程序。输入工程名称后点击确定






2、将CPPUNIT复制到工程目录

可以将cppunit-1.12.1整个文件夹复制到工程文件夹下,也可以只复制include和lib,本文选择后者。因为只需要用到include和lib,文件少便于工程的搬移。



3、设置VS工程

有且仅有三处需要设置:

A、打开VS项目->属性->配置属性,在C/C++附加包含目录中设置路径:"..\cppunit-1.12.1\include"

B、在链接器附加库目录中设置路径:"..\cppunit-1.12.1\lib"

C、在链接器->输入附加依赖项中设置:cppunitd.lib和testrunnerd.lib


4、添加CPPUNIT文件

CPPUNIT文件共有三个:CExampleTest.cpp、CExampleTest.h、main.cpp。


CExampleTest.cpp文件:

#include "CExampleTest.h"
#include "Monkey.h"
// 注册测试套到CppUnit
CPPUNIT_TEST_SUITE_REGISTRATION( CExampleTest );

void CExampleTest::setUp()
{

}
// tearDown: 在每个用例后执行一次
void CExampleTest::tearDown()
{

}
void CExampleTest::TestCase01()
{
Point Walls[] = {{0, 2}, {1, 2}, {2, 2}, {4, 1}, {5, 1}};
RoomInfo info = MonkeyGo(6, 4, sizeof(Walls)/sizeof(Walls[0]), Walls);
CPPUNIT_ASSERT(info.trap_num == 2);
CPPUNIT_ASSERT(info.unreachable_num == 3);
}


CExampleTest.h文件:


#ifndef _CEXAMPLE_TEST_H
#define _CEXAMPLE_TEST_H

#include <cppunit/extensions/HelperMacros.h>
class CExampleTest : public CPPUNIT_NS::TestFixture
{
CPPUNIT_TEST_SUITE(CExampleTest);
CPPUNIT_TEST(TestCase01);
        CPPUNIT_TEST_SUITE_END();

public:
void setUp();
        void tearDown();

void TestCase01();
};
#endif /*_CEXAMPLE_TEST_H*/


main.cpp文件:


#include <cppunit/TextOutputter.h>
#include <cppunit/XmlOutputter.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/TestRunner.h>


int main(int argc, char* argv[])
{
    // Create the event manager and test controller
    CPPUNIT_NS::TestResult controller;


    // Add a listener that colllects test result
    CPPUNIT_NS::TestResultCollector result;
    controller.addListener( &result );


    // Add a listener that print dots as test run.
    CPPUNIT_NS::BriefTestProgressListener progress;
    controller.addListener( &progress );


    // Add the top suite to the test runner
    CPPUNIT_NS::TestRunner runner;
    runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry("All Tests").makeTest() );
    runner.run( controller );


    // Print test in a text format.
    CPPUNIT_NS::TextOutputter outputter( &result, CPPUNIT_NS::stdCOut() );
    outputter.write();


    // This for XML output
    std::ofstream file( "TestResult.xml" );
    CPPUNIT_NS::XmlOutputter xml( &result, file );
    xml.setStyleSheet( "report.xsl" );
    xml.write();
    file.close();


    return result.wasSuccessful() ? 0 : 1;
}


Monkey.cpp:


#include <Monkey.h>
#include <stdio.h>
#include <malloc.h>
RoomInfo MonkeyGo(unsigned int x, unsigned int y, unsigned int num, Point Walls[])
{
RoomInfo roomInfo = {0, 0};
return roomInfo;
}


Monkey.h :


#ifndef _MONKEY_H_
#define _MONKEY_H_

typedef struct
{
unsigned int x;
unsigned int y;
}Point;

typedef struct
{
unsigned int unreachable_num;
unsigned int trap_num;
}RoomInfo;

RoomInfo MonkeyGo(unsigned int x, unsigned int y, unsigned int num, Point Walls[]);

#endif

5、编译链接,运行如下

6、下载地址

http://download.csdn.net/detail/pkcfl/9584306



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值