前段時間用過CPPunit,但都是直接拿來用的,今天自己裝了下,測試通過,不過也花費了很多時間。。
1、下載cppunit,可以從sourceforge上找
2、解壓 tar。。。
3、安裝 ./configure make make install
4、配置:
將cppunit-version目錄下include目錄的cppunit目錄cp到/usr/include下
5、配置鏈接庫:
修改/etc/ld.so.conf文件,在最後加入一行: /usr/local/lib
修改後使用ldconfig,從新加載conf文件
然後利用ldconfig -v | grep cppunit 查看是否有libcppunit庫,有的話說明加載正常
6、利用cppunit進行測試:
testApp.cpp
#include <iostream>
#include <cppunit/TestRunner.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
class Test : public CPPUNIT_NS::TestCase
{
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testHelloWorld);
CPPUNIT_TEST_SUITE_END();
public:
void setUp(void) {}
void tearDown(void) {}
protected:
void testHelloWorld(void) { std::cout << "Hello, world!" << std::endl; }
};
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
int main( int argc, char **argv )
{
// Create the event manager and test controller
CPPUNIT_NS::TestResult controller;
// Add a listener that colllects test result
CPPUNIT_NS::TestResultCollector result;
controller.addListener( &result );
// Add a listener that print dots as test run.
CPPUNIT_NS::BriefTestProgressListener progress;
controller.addListener( &progress );
// Add the top suite to the test runner
CPPUNIT_NS::TestRunner runner;
runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
runner.run( controller );
return result.wasSuccessful() ? 0 : 1;
}
7、編譯:可以用靜態庫和動態庫來編譯:
靜態庫:
g++ test.cpp -L/usr/local/lib/libcppunit.a -lcppunit -ldl -o test
動態庫:
g++ test.cpp -lcppunit -ldl -o test
8、運行:
./test
可以看到輸出,有一個ok就表示成功了
上午折騰了很久,剛開始沒有加#include <cppunit/extensions/HelperMacros.h>這個頭文件,結果一直找不到CPPUNIT_TEST_SUITE()和另外兩個宏的定義。。。這三個宏是在該文件中定義的