どうもこんばんわ。
安藤@るるねっとです。
2002/10/07 10:45:16 +0900にFUKUDA Fumiki <ffukuda@....jp>さんに頂いた
「[XP-jp:03796] Re: xUnit が最低限持つべき機能とは?(was: ExcelUnit)」への返事です。
>επιστημηです。
>
>--- "[XP-jp:03794] Re: xUnit が最低限持つべき機能とは?(was: ExcelUnit)" / ando@....jp ---
>
>>># あ、テストの順番を入れ替えたいとかあるでしょか?
>>># 河童でやれないかとかんがえちゅーなんす。
>>
>> えーっと。JUnit だと TestSuite 機能で適切にグルーピング(?)すれば、
>>後は Jakarta-Ant のプロジェクトで起動するテストクラス名を変えるだけ
>>でクラス/グループ単位の試験はできますよね? テストメソッド単位は
>>できませんけど。
>
>Java(JUnit)だとそうなんでしょうけど、C++(CppUnit)のHelperMacrosを
>使ってsuiteを自動登録したとき、実行される suite の順番は'不定'なんです。
># 事実上'リンク順'なんだけど、どんな環境でもそうなるという保証がない
>で、登録されたsuite/methodの やる/やらない/順番 を簡単な
>GUIから(または設定ファイルみたいなので)制御できれば幸せ
>になれるならやってみんべかと。
suite は無理そう(※)ですが、method の順番は、CppUnit-x
でも制御可能です。やり方は以下の通りです。
知っていれば簡単ですが……(涙;)。
void Sample5Test::testAAA()
{
printf("testAAA\n");
}
void Sample5Test::testBBB()
{
//TEST_ERROR("not implemented yet");
printf("testBBB\n");
}
void Sample5Test::testAAAtoBBB()
{
printf("testAAAtoBBB\n"); // AAA を先に試験する
testAAA();
testBBB();
}
void Sample5Test::testBBBtoAAA()
{
printf("testBBBtoAAA\n"); // BBB を先に試験する
testBBB();
testAAA();
}
※※
CppUnit-x は、TestSuite が Test を継承しているので、
TestSuite に TestSuite をaddTest()してやればある程度
実行制御可能かも? と思ったのですが、親の TestSuite
で実行される suite の順番が'不定'なのでダメですね。
また、TestSetup で、前後に setUp(),tearDown() を挟
む方式(そしてTestSetupの実装クラスをあたかもDecorator
の様に切り替えて使う)ならできそうですが、それは「テスト
の順番」を切り替えるという意味では違いますよね……。
>>※ 将来は河童さんで対処する?
<<中略>>
># テストする/しない/順序/食わすデータ を
># 再コンパイル'なし'に制御できるんで、
># '個人的には'かなり幸せです^^;
それは、確かにそうです。
期待しております。;-).
ではでは。よしなに。
------------------------------------------------------------
誰にも分からないJava講座 安藤 利和 ando@....jp
http://park.ruru.ne.jp/ando/work/who/