CppUnit的简单实用

1.CppUnit使用

函数使用
Fixture一个或一组测试用例的测试对象。可以是你要测试的对象或者函数。
TestCase测试用例。是对测试对象的某个功能或流程编写的测试代码。对一个Fixture,可能有多个测试用例。
TestSuite同时运行的测试用例的集合。可以是一个fixture的多个测试函数、也可以是多个fixture的所有测试用例。
使用时,在测试的主文件中将TestCase注册到TestSuite中,并运行。

流程图:

在这里插入图片描述

2.CppUnit实例

新建MathTest头文件.h

class MathTest : public CppUnit::TestFixture {
    // 添加一个TestSuite
CPPUNIT_TEST_SUITE( MathTest );
        // 添加测试用例到TestSuite, 定义新的测试用例需要在这儿声明一下
        CPPUNIT_TEST( testAdd );
        CPPUNIT_TEST( testSub );
    CPPUNIT_TEST_SUITE_END();

protected:
    int x, y;
public:
    MathTest() {}
    // 初始化函数
    void setUp ();
    // 清理函数
    void tearDown();
    // 测试加法的测试函数
    void testAdd ();
    // 测试减法的测试函数
    void testSub ();

};
#endif //WW_TEST_MATHTEST_H
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

新建MathTest实现类.cpp


//将TestSuite注册到一个名为alltest的TestSuite中
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(MathTest,"alltest");


void MathTest::setUp()
{
    x = 2;
    y = 3;
}
void MathTest::tearDown()
{
}
void MathTest::testAdd()
{
    int result = x + y;
    CPPUNIT_ASSERT( result == 5 );
}

void MathTest::testSub()
{
    int result = x + y;
    CPPUNIT_ASSERT( result == 1 );
}

#include "MathTest.h"


 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

main类

    #include <cppunit/extensions/TestFactoryRegistry.h>
    #include <cppunit/ui/text/TestRunner.h>
    #include <cppunit/CompilerOutputter.h>
    #include <cppunit/BriefTestProgressListener.h>
    #pragma comment (lib,"cppunitd.lib");//静态
    #pragma comment(lib,"testrunnerud.lib");
    
    
    int main()
    {
        CppUnit::TextUi::TestRunner runner;
        // 增加监听器,eventManager返回TestResult类的对象,维护一个Listener集合,Listener将决定测试过程表现,包括日志输出格式
        CPPUNIT_NS::BriefTestProgressListener progress;
        // 从注册的TestSuite中获取特定的TestSuite, 没有参数获取未命名的TestSuite.
        CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry("alltest");
        // 添加这个TestSuite到TestRunner中
        runner.addTest( registry.makeTest() );
        // 设置输出,注意对象被runner释放
        runner.setOutputter(new CPPUNIT_NS::CompilerOutputter(&runner.result(), std::cerr));
        //运行程序
        runner.run();
    }

3.编译程序

输入一下命令,进行编译

g++ -L /usr/local/lib/libcppunit.a main.cpp MathTest.cpp -lcppunit -ldl -o MathTest
 
 

    /usr/local/lib/libcppunit.a为安装CppUnit是的libcppunit.a路径

    main.cpp 、MathTest.cpp为要编译的cpp文件

    MathTest为编译生成的可执行文件

    运行:./MathTest

    运行结果如下

    这里写图片描述


    查看编译完成后,MathTest具体实现

    g++ -E MathTest.cpp -o MathTest.E
     
     
    • 1

    使用gedit打开MathTest.E文件

    sudo gedit./MathTest.E
    
     
     
    • 1
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值