CppUnit——Hello, World

来源:互联网 发布:linux 启动java main 编辑:程序博客网 时间:2024/05/16 05:20

环境:VC2003

CppUnit:1.12.0

1.下载:

http://sourceforge.net/projects/cppunit/

2.安装(编译):

 将下载的cppunit-1.12.0.tar.gz解压,这里解压到D:/cppunit-1.12.0

D:/cppunit-1.12.0下有个INSTALL-WIN32.txt,它里面包括源代码和几个测试例子,可以按照里面的说明来编译。

1)Open examples/examples.dsw in VC++ (contains all the samples).
用VC打开examples/examples.dsw
2)VC7 will ask you if you want to convert, anwser 'yes to all'.
VC7会询问你是否进行转换,选择“全是”
3)Make HostApp the Active project
设置HostApp为启动工程
4)Compile
编译
5)编译完了,程序会将生成的库自动拷到D:/cppunit-1.12.0/lib下

注:
1)对于cppunit和cppunit_dll,在工程属性-C/C++-代码生成-运行时库里设置的选项要和使用CppUnit进行测试的C++工程设置的一样,否则会报2005连接错误
2)由于没设置编译顺序,直接生成解决方案可能会有错误,多生成几次就正确了

3.使用:

1)新建一个名为UT的工程,编辑工程属性:
C/C++-常规-附加包含目录:"D:/cppunit-1.12.0/include"
链接器-常规-附加库目录:"D:/cppunit-1.12.0/lib"
链接器-输入-附加依赖项:cppunit.lib

2)添加要被测试的类calc:

//calc.h
#pragma once

class calc
{
public:
    int add(int i, int j);
    int sub(int i, int j);
};

//calc.cpp
#include "calc.h"

int calc::add(int i, int j)
{
    return i + j;
}

int calc::sub(int i, int j)
{
    return i - j;
}

注:此类只实现:整数的加,整数的减

3)添加用来测试的类calcTest:

//calcTest.h
#pragma once
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include "calc.h"

class calcTest : public CPPUNIT_NS::TestFixture
{
    //定义一个测试套
    CPPUNIT_TEST_SUITE(calcTest);

    //添加测试用例
    CPPUNIT_TEST(addTest1);
    CPPUNIT_TEST(subTest1);

    //测试套定义结束
    CPPUNIT_TEST_SUITE_END();

public:
    //用来进行测试前的设置,比如内存申请等
    void setUp();

    //用来进行测试后的设置,比如内存释放等
    void tearDown();
       
    void addTest1();
    void subTest1();
private:
    calc* m_pcalc;
};

//calcTest.cpp
#include "calcTest.h"

void calcTest::setUp()
{
    m_pcalc = new calc();
}

void calcTest::tearDown()
{
    delete m_pcalc;
}

void calcTest::addTest1()
{
    //执行测试函数
    int iRet = m_pcalc->add(1, 2);

    //断言结果
    CPPUNIT_ASSERT(3 == iRet);
}

void calcTest::subTest1()
{
    //执行测试函数
    int iRet = m_pcalc->sub(1, 2);

    //断言结果
    CPPUNIT_ASSERT(-1 == iRet);
}

4)添加执行测试的主文件main.cpp:

#include "cppunit/CompilerOutputter.h"
#include "cppunit/ui/text/TestRunner.h"
#include "cppunit/extensions/HelperMacros.h"
#include "calcTest.h"
#include <fstream>

int main()
{
    //测试执行者
    CppUnit::TextUi::TestRunner oTestRunner;

    //增加测试装置
    oTestRunner.addTest(calcTest::suite());

    //输出到文件
    std::ofstream fout("./test.log");
    oTestRunner.setOutputter(CppUnit::CompilerOutputter
        ::defaultOutputter(&oTestRunner.result(), fout));

    //执行用例
    oTestRunner.run();
}