Index: [Article Count Order] [Thread]

Date:  Tue, 8 Oct 2002 00:43:37 +0900
From:  ando@....jp
Subject:  [XP-jp:03799] Re: xUnit が最低限持つべき機能とは?	(was:  ExcelUnit)
To:  extremeprogramming-jp@....jp
Message-Id:  <20021008004337ando@....jp>
In-Reply-To:  <200210070147.g971lEd9026083@....jp>
References:  <200210070147.g971lEd9026083@....jp>
X-Mail-Count: 03799

  どうもこんばんわ。
  安藤@るるねっとです。

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/