eXtreme Programmingテスト技法―xUnitではじめる実践XPプログラミング (OOP foundations)
- 作者: 日本XPユーザグループ,長瀬嘉秀
- 出版社/メーカー: 翔泳社
- 発売日: 2001/11
- メディア: 単行本
- クリック: 20回
- この商品を含むブログ (14件) を見る
まずは 194 ページ List9-1〜9-3
いくつか本のままだと動かない部分があったので修正(@@@ の項目)
CppUnit-x のサンプルとか紹介ページとかだとよくわからなかったけど、これをやってみてよくわかった:)
#動作環境は VC++6.0
#define CPPUNIT_COMPATIBLE // @@@ これがないと assertDoublesEqual が定義されない #include <cppunit/TestCase.h> #include <math.h> #include <vector> #pragma comment( lib, "cppunit.lib" ) USING_NAMESPACE_CPPUNIT class MyTest : public TestCase { public: // いつも決まった形のコンストラクタ MyTest( const char* name ) : TestCase( name ) {} // 準備用のコード void setUp() { } // 後片付けようのコード void tearDown() { } // テストを書く void runTest() { // -1 のアークコサインはだいたい円周率になる assertDoublesEqual( 3.14, acos( -1 ), 0.01 ); // @@@ 本は assertDoublesEquals になってた // 範囲外アクセスは例外が投げられるはず // 正しい例外が投げられるかチェックする std::vector< char > x( 5, 'a' ); try { char y = x.at( 21 ); // 例外発生(正常終了) // char y = x[21]; // 例外でない(FAIL) // throw std::exception(); // 想定外のエラー TEST_FAIL( "例外が投げられませんでした\n" ); } catch ( std::out_of_range ) { // 正常な例外 } catch ( ... ) { TEST_ERROR( "予定外のエラーが投げられました\n" ); } } }; #include <cppunit/TestRunner.h> int main( int argc, char* argv[] ) { TestRunner runner; runner.addTest( "MyTest", new MyTest( "MyTest" ) ); // @@@ 本ではコンストラクタ引数がない、クラス名注意 return runner.run( argc, argv ); } // EOF