CppUnit

うーん、結局今日は半日CppUnitに費やしてしまった。とりあえずこんなかんじでしょうか。

//#include 
#include 
//#include 
#include 
//#include 
#include 
//全部インクルードしたほうが無難な気がする・・・

class TestSample : public CppUnit::TestFixture  {
private:
     int *i;
public:
     void setUp(){
          i = new int(0);
     }
     void tearDown(){
          delete i;
     }
     void test01(){
          CPPUNIT_ASSERT(*i == 0);
     }
     void test02(){
          CPPUNIT_ASSERT(*i+1 == 0);
     }
     static CppUnit::Test *suite(){
          CppUnit::TestSuite *suite = new CppUnit::TestSuite("TestSample");
          suite->addTest(new CppUnit::TestCaller < TestSample > ("test01", &TestSample::test01));
          suite->addTest(new CppUnit::TestCaller < TestSample > ("test02", &TestSample::test02));
          return suite;
     }
};

int main() {
     CppUnit::TextUi::TestRunner runner;
     runner.addTest(TestSample::suite());
     runner.run();
     return 0;
}

% g++ sample.cpp -o sample -I$HOME/local/include -L$HOME/local/lib -lcppunit

こんな感じでしょうか。もちろんパスが通ってればライブラリの指定だけでいいけど。結果は

% ./sample
..F

!!!FAILURES!!!
Test Results:
Run:  2   Failures: 1   Errors: 0


1) test: test02 (F) line: 22 sample.cpp
 "*i+1 == 0"

こんな感じみたい。HelperMacros.hとか使うともっと楽できそう。もう少しいじってみますか。