<2006年10月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

  • 随笔 - 44
  • 文章 - 0
  • 评论 - 86
  • 引用 - 0

常用链接

留言簿(6)

随笔分类(31)

随笔档案(44)

Mining

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜

通过例子学习 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的使用和宏进行了简单的分析



posted on 2006-10-18 20:59 泡泡牛 阅读(3552) 评论(0)  编辑 收藏 引用 所属分类: Develop


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理