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