Index: [Article Count Order] [Thread]

Date:  Fri, 15 Dec 2000 16:19:53 +0900
From:  "Masaru Ishii" <mishii@....jp>
Subject:  [XP-jp:01340] RE:  テスティングフレームワークの  suite メソッド
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <NEBBLCBLMJKDLAMIAMIGAEMOCOAA.mishii@....jp>
In-Reply-To:  <3A39BD21.36F2B839@....jp>
Posted:  Fri, 15 Dec 2000 16:22:31 +0900
X-Mail-Count: 01340

佃さん,こんにちは.石井です.

> http://member.nifty.ne.jp/masarl/article/testing-framework.html
>
> 石井さんの記事の「TestRunnerの使い方」の章に「suiteクラスメ
> ソッドが必要」と書いていますが、MoneyTestクラスやSimpleTest
> クラスにはsuiteクラスメソッドが見当たりません。
>
> これは、石井さんが記事をかかれた時期のjunitのバージョンでは
> 必要だったということでしょうか。それとも何か私が勘違いしてい
> るのでしょうか。

この記事を書いたのは1年以上前で,JUnit のバージョンは確か 2.1 ぐらい
だったと思います.そのときの TestRunner の UI 版では,suite クラスメソッド
が必要だったのだと思います.今のUI版ではいらないのかもしれませんね.

記事を書いたときのバージョンは古いですが,JUnit に関しては最新の 3.2
からクラス構成はさほど変わってないと思います.CppUnit と VBUnit は
その後使ってないのでわかりません.

ちなみに,今の開発ではもっぱら junit.text.TestRunner を使ってまして,
テストケースは以下のようにしてます.

class SampleTest
{
    public void testA() throws Exception { ... }
    public void testB() throws Exception { ... }

    public static void main (String[] args)
    {
        Test test;
        if (args.length == 0) {
            test = suite();
        }
        else {
            TestSuite suite = new TestSuite();
            for (int i = 0; i < args.length; ++i) {
                suite.addTest(testNamed(args[i]));
            }
            test = suite;
        }
        junit.textui.TestRunner.run(test);
    }

    public static Test testNamed(String name)
    {
        return new SampleTest(name);
    }

    public static Test suite()
    {
        return new TestSuite(SampleTest.class);
    }
}

こうすると,コマンドラインで テストメソッド名を指定したときは,指定された
テストメソッドのみ,何も指定しなかった場合はすべてのテストメソッドが
実行されるようになります.

では.