通过例子学习 CPPUnit

通过例子学习 CPPUnit
下面是CPPUnit的一个简单例子.
class  SimpleCalcTest :  public  CPPUNIT_NS::TestFixture
{
    CPPUNIT_TEST_SUITE( SimpleCalcTest );
    CPPUNIT_TEST( testAdd );
    CPPUNIT_TEST( testSub );
    CPPUNIT_TEST( testMul);
    CPPUNIT_TEST( testDiv );
    CPPUNIT_TEST_SUITE_END();

private  :
    SimpleCalculator 
*  sc;

public :
    
virtual   void  setUp()
    {
        sc 
=   new  SimpleCalculator();
    }
    
virtual   void  tearDown()
    {
        delete sc;
    }

    
void  testAdd(){
        CPPUNIT_ASSERT_EQUAL( sc
-> add( 5 , 6 ),  11 );
    }

    
void  testSub(){
        CPPUNIT_ASSERT_EQUAL( sc
-> sub( 5 , 6 ),  - 1  );
    }

    
void  testMul(){
        CPPUNIT_ASSERT_EQUAL( sc
-> mul( 5 , 6 ),  30  );
    }

    
void  testDiv(){
        CPPUNIT_ASSERT_EQUAL( sc
-> div( 12 , 6 ),  2  );
    }
};

//  把这个TestSuite注册到名字为"alltest"的TestSuite中, 如果没有定义会自动定义
//  也可以CPPUNIT_TEST_SUITE_REGISTRATION( MathTest );注册到全局的一个未命名的TestSuite中.
CPPUNIT_TEST_SUITE_REGISTRATION( SimpleCalcTest,  " alltest "  );

int  main()
{
    CPPUNIT_NS::TestResult r;
    CPPUNIT_NS::TestResultCollector result;
    r.addListener( 
& result );
    
    
//  从注册的TestSuite中获取特定的TestSuite, 没有参数获取全局的未命名的TestSuite.
    CPPUNIT_NS::TestFactoryRegistry::getRegistry( " alltest " ).makeTest() -> run(  & r );
    CPPUNIT_NS::TextOutputter 
out & result, std::cout );
    
out .write();
    
return   0 ;
}

从上面的代码可以看到, 使用CPPUnit 主要是两个步骤:
1. 创建TestSuite
首先从CPPUNIT_NS::TestFixture 生成一个子类, 然后用宏 CPPUNIT_TEST_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END 来定义要测试的各个小单元, 并且实现CPPUNIT_TEST 中定义的类函数; 在每个类函数中使用 CPPUNIT_ASSERT, CPPUNIT_ASSERT_MESSAGE, CPPUNIT_FAIL, CPPUNIT_ASSERT_EQUAL, CPPUNIT_ASSERT_EQUAL_MESSAGE, CPPUNIT_ASSERT_DOUBLES_EQUAL 等来对结果进行断言.

然后通过宏 CPPUNIT_TEST_SUITE_REGISTRATION 将测试类注册到TestSuite中.

2. Main
在main程序中对TestSuite 进行测试.


CPPUnit的更详细的资料可以查看:
IBM 的 便利的开发工具 CppUnit 快速使用指南  比较详细的介绍了CppUnit
VCKBase的 CppUnit测试框架入门 详细的介绍了VC6下MFC Dialog下的CPPUnit的使用
CSDN 的 如何使用CppUnit做单元测试 介绍了VC6的MFC 下的CPPUnit的使用, 和VCKBase的实现稍微有点差别
Meng Yan ( 孟岩 ) 的文章 CPPUnit Lite 对CPPUnit的使用和宏进行了简单的分析



你可能感兴趣的:(通过例子学习 CPPUnit)