通過例子學(xué)習(xí) CPPUnit
下面是CPPUnit的一個(gè)簡單例子.
從上面的代碼可以看到, 使用CPPUnit 主要是兩個(gè)步驟:
1. 創(chuàng)建TestSuite
首先從CPPUNIT_NS::TestFixture 生成一個(gè)子類, 然后用宏 CPPUNIT_TEST_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END 來定義要測(cè)試的各個(gè)小單元, 并且實(shí)現(xiàn)CPPUNIT_TEST 中定義的類函數(shù); 在每個(gè)類函數(shù)中使用 CPPUNIT_ASSERT, CPPUNIT_ASSERT_MESSAGE, CPPUNIT_FAIL, CPPUNIT_ASSERT_EQUAL, CPPUNIT_ASSERT_EQUAL_MESSAGE, CPPUNIT_ASSERT_DOUBLES_EQUAL 等來對(duì)結(jié)果進(jìn)行斷言.
然后通過宏 CPPUNIT_TEST_SUITE_REGISTRATION 將測(cè)試類注冊(cè)到TestSuite中.
2. Main
在main程序中對(duì)TestSuite 進(jìn)行測(cè)試.
CPPUnit的更詳細(xì)的資料可以查看:
IBM 的 便利的開發(fā)工具 CppUnit 快速使用指南? 比較詳細(xì)的介紹了CppUnit
VCKBase的 CppUnit測(cè)試框架入門 詳細(xì)的介紹了VC6下MFC Dialog下的CPPUnit的使用
CSDN 的 如何使用CppUnit做單元測(cè)試 介紹了VC6的MFC 下的CPPUnit的使用, 和VCKBase的實(shí)現(xiàn)稍微有點(diǎn)差別
Meng Yan ( 孟巖 ) 的文章 CPPUnit Lite 對(duì)CPPUnit的使用和宏進(jìn)行了簡單的分析
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?);
????}
};
//?把這個(gè)TestSuite注冊(cè)到名字為"alltest"的TestSuite中,?如果沒有定義會(huì)自動(dòng)定義
//?也可以CPPUNIT_TEST_SUITE_REGISTRATION(?MathTest?);注冊(cè)到全局的一個(gè)未命名的TestSuite中.
CPPUNIT_TEST_SUITE_REGISTRATION(?SimpleCalcTest,?"alltest"?);
int?main()
{
????CPPUNIT_NS::TestResult?r;
????CPPUNIT_NS::TestResultCollector?result;
????r.addListener(?&result?);
????
????//?從注冊(cè)的TestSuite中獲取特定的TestSuite,?沒有參數(shù)獲取全局的未命名的TestSuite.
????CPPUNIT_NS::TestFactoryRegistry::getRegistry("alltest").makeTest()->run(?&r?);
????CPPUNIT_NS::TextOutputter?out(?&result,?std::cout?);
????out.write();
????return?0;
}
{
????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?);
????}
};
//?把這個(gè)TestSuite注冊(cè)到名字為"alltest"的TestSuite中,?如果沒有定義會(huì)自動(dòng)定義
//?也可以CPPUNIT_TEST_SUITE_REGISTRATION(?MathTest?);注冊(cè)到全局的一個(gè)未命名的TestSuite中.
CPPUNIT_TEST_SUITE_REGISTRATION(?SimpleCalcTest,?"alltest"?);
int?main()
{
????CPPUNIT_NS::TestResult?r;
????CPPUNIT_NS::TestResultCollector?result;
????r.addListener(?&result?);
????
????//?從注冊(cè)的TestSuite中獲取特定的TestSuite,?沒有參數(shù)獲取全局的未命名的TestSuite.
????CPPUNIT_NS::TestFactoryRegistry::getRegistry("alltest").makeTest()->run(?&r?);
????CPPUNIT_NS::TextOutputter?out(?&result,?std::cout?);
????out.write();
????return?0;
}
從上面的代碼可以看到, 使用CPPUnit 主要是兩個(gè)步驟:
1. 創(chuàng)建TestSuite
首先從CPPUNIT_NS::TestFixture 生成一個(gè)子類, 然后用宏 CPPUNIT_TEST_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END 來定義要測(cè)試的各個(gè)小單元, 并且實(shí)現(xiàn)CPPUNIT_TEST 中定義的類函數(shù); 在每個(gè)類函數(shù)中使用 CPPUNIT_ASSERT, CPPUNIT_ASSERT_MESSAGE, CPPUNIT_FAIL, CPPUNIT_ASSERT_EQUAL, CPPUNIT_ASSERT_EQUAL_MESSAGE, CPPUNIT_ASSERT_DOUBLES_EQUAL 等來對(duì)結(jié)果進(jìn)行斷言.
然后通過宏 CPPUNIT_TEST_SUITE_REGISTRATION 將測(cè)試類注冊(cè)到TestSuite中.
2. Main
在main程序中對(duì)TestSuite 進(jìn)行測(cè)試.
CPPUnit的更詳細(xì)的資料可以查看:
IBM 的 便利的開發(fā)工具 CppUnit 快速使用指南? 比較詳細(xì)的介紹了CppUnit
VCKBase的 CppUnit測(cè)試框架入門 詳細(xì)的介紹了VC6下MFC Dialog下的CPPUnit的使用
CSDN 的 如何使用CppUnit做單元測(cè)試 介紹了VC6的MFC 下的CPPUnit的使用, 和VCKBase的實(shí)現(xiàn)稍微有點(diǎn)差別
Meng Yan ( 孟巖 ) 的文章 CPPUnit Lite 對(duì)CPPUnit的使用和宏進(jìn)行了簡單的分析
posted on 2006-10-18 20:59 泡泡牛 閱讀(3603) 評(píng)論(0) 編輯 收藏 引用 所屬分類: Develop