Main函數(shù):
#include
#include
// 如果不更改TestSuite, 本文件后期不需要更改.
int main()
{
CppUnit::TextUi::TestRunner runner;
//從注冊(cè)的TestSuite中獲取特定的TestSuite
CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry("alltest");
//添加這個(gè)TestSuite到TestRunner中
runner.addTest( registry.makeTest() );
// 運(yùn)行測(cè)試
runner.run();
}
編譯:
g++ Math.cpp MathTest.cpp main.cpp -lcppunit -ldl -lm -lpthread -o mathTest
運(yùn)行:
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
./mathTest
顯示:
通過(guò)的情況:OK (1 tests)
失敗的情況:會(huì)顯示那個(gè)測(cè)試類中的哪行測(cè)試不通過(guò)
!!!FAILURES!!!
Test Results:
Run: 1 Failures: 1 Errors: 0
1) test: MathTest::testAdd (F) line: 15 MathTest.cpp
assertion failed
- Expression: ret==4
四:實(shí)際應(yīng)用
之前組內(nèi)討論時(shí),有些模塊考慮到開(kāi)發(fā)測(cè)試代碼時(shí)間,以及新人上手慢的問(wèn)題,我覺(jué)得也有道理,后面有時(shí)間會(huì)繼續(xù)完善測(cè)試過(guò)程,總結(jié)下什么樣的模塊適合做單元測(cè)試,以及怎么減少這種代價(jià)和風(fēng)險(xiǎn)。
五:什么樣的模塊適合做類單元測(cè)試
不能單獨(dú)運(yùn)行的模塊,必須依賴上級(jí)模塊的輸出結(jié)果等情形;
提供給別的模塊做調(diào)用的,提供頭文件,.so動(dòng)態(tài)庫(kù)或者.a靜態(tài)庫(kù);
Api測(cè)試,基礎(chǔ)組件(kfc、mmdb)的api接口;
以上情形中,被測(cè)函數(shù)參數(shù)個(gè)數(shù)、類型不發(fā)生變化或者變化不頻繁;
測(cè)試過(guò)程中,使用了開(kāi)發(fā)包裝過(guò)的工具去測(cè)試的,也可以考慮下是否可行;
待補(bǔ)充。
六:對(duì)開(kāi)發(fā)的要求
模塊測(cè)試的提測(cè)標(biāo)準(zhǔn):
需要有被測(cè)功能的頭文件;
需要一份簡(jiǎn)單的文檔,說(shuō)明該功能怎么調(diào)用,以及對(duì)傳入的參數(shù)有什么樣的要求(比如廣告的featureWordHash要事先排序等這
類問(wèn)題);
原文鏈接http://testing.etao.com/