cppunit 印象

来源:互联网 发布:c语言connect函数 编辑:程序博客网 时间:2024/04/28 18:25

转贴于

http://www.18ie.com/wordpress/?p=25

看了好几天cppunit,代码读着真难受,简直让人恶心。 好几次,都想放弃用cppunit了,也不知道cppunit到底有何方便的,一帮子人在吹,到底谁在实践中用过? 还不如自己用assert()写测试,来的方便、快捷,容易读。 今天,总算找到一个容易明白些的例子,分析并写一下自己的体会 :

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 );
}
};

CPPUNIT_TEST_SUITE_REGISTRATION( SimpleCalcTest );

主函数如下:
int main()
{
CPPUNIT_NS::TestResult r;
CPPUNIT_NS::TestResultCollector result;
r.addListener( &result );

CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest()->run( &r );
CPPUNIT_NS::TextOutputter out( &result, std::cout );
out.write();
return 0;
}

我对这段代码的理解:

理解1) 主函数,天生就是这个样子,里面怪异的语句,不用去理解,也不用改动,除非你不怕浪费脑细胞,想去研究cppunit的内部结构。

理解2)实际应用时,需要把要测试的类名换成自己的类名,修改2点:

SimpleCalculator * sc;

sc = new SimpleCalculator();
把要测试的类名SimpleCalculator,换成自己的类名。

至于SimpleCalcTest (如果你和我一样懒,连这个类名也不用动)

理解3)如果想新加一个测试例,只需要2步:

1)增加 CPPUNIT_TEST( testNew);

2) 增加 void testNew(){
CPPUNIT_ASSERT_EQUAL( sc->mul(5,6), 30 );  //自己修改
}

这些只是我看代码的体会,在自己脑子里转来转去的“悟道”,还没有在真实的开发环境中检验。

看客当心被我“误导”呀。 

马飞涛

另外一个mfc dialog 类型的测试用例:
http://codeproject.com/library/Using_CPPUnit.asp?print=true

http://www.opensourcetesting.org/unit_c.php

 
原创粉丝点击