岡と申します。はじめまして。
渋川よしき <shibu@....jp> さん:
shibu> 僕はRubyのスクリプトで上に書いてあるようなことをやっています。
shibu> なぜ故にわざわざスクリプトかというと、TestCaseをパージングして、
shibu> suite()とmain()を自動生成させているからです。
私も最近 CppUnit を使い始めたのですが、何が面倒かって、あの、
クラス内でのメソッド宣言、スイートへの登録、そしてメソッド本体の
定義と、3回も同じようなことを書かなくちゃならないのが苦痛ですよね。
ということで、私の場合は、メソッド本体の定義から、メソッド宣言と
スイートへの登録をするヘッダーファイルを自動生成するようにして
います。
次のような感じ。
---- foo_test.cpp ----
class FooTestCase : public TestCase {
public:
…
protected:
#define __TEST_CASE_DECLARATION__
#include "foo_test.cases.h"
#undef __TEST_CASE_DECLARATION__
};
Test *FooTestCase::suite()
{
TestSuite *testSuite = new TestSuite( "FooTestCase" );
#define __TEST_CASE_ADDITION__
#include "foo_test.cases.h"
#undef __TEST_CASE_ADDITION__
return testSuite;
}
void FooTestCase::testBar()
{
assert( … );
}
----
から、"void XXXX::testYYYY(" というパターンを取り出して、
---- foo_test.cases.h ----
#ifdef __TEST_CASE_DECLARATION__
void testBar();
#endif
#ifdef __TEST_CASE_ADDITION__
testSuite->addTest( new TestCaller<FooTestCase>("testBar", &FooTestCase::testBar) );
#endif
----
を生成。
foo_test.cpp と foo_test.cases.h の依存関係のチェックなどは、
Makefile でやっています。
--
岡 俊行 (OKA, Toshiyuki) oka@....com