Top / Java / JUnit / TIPS集

コマンドラインやantから実行する。

今までEclipseでやってたんでmainメソッドを書いてなかったんですが、antやコマンドラインからやる場合、mainメソッドを作る必要があります。

  • TestCase?のサブクラスの場合
    public static void main(String[] args) {
     junit.textui.TestRunner.run(HogeTest.class);
    }
  • TestSuite?を作った場合
    public static void main(String[] args) {
     junit.textui.TestRunner.run(suite());
    }

でOKですね。

パッケージ内のすべてのテストクラスを実行する。

テスト対象のクラスが増えてくると、それとともにテストクラスが増えてくるわけですが、そのテストクラス群をすべて実行する方法です。まずパッケージ内のすべてのテストクラスを実行するには、AllTests?などというクラスを同パッケージ内に作成し、

public static Test suite()

というメソッドを実装します。このメソッド内で、TestSuite?クラスのインスタンスを作成し、テストクラスを追加すればよいのです。具体的には

public static Test suite() {
 TestSuite suite = new TestSuite("Test for Package");
 suite.addTest(new TestSuite(HogeTest.class));
 suite.addTest(new TestSuite(FugaTest.class));
 return suite;
}

とすると、HogeTest?FugaTest?というテストクラスを一連で実行することができます。

パッケージ内のあるテストクラスのあるテストメソッドだけを実行する。

上のやり方はテストクラスの全メソッドを実行してしまいますが、あるメソッドだけ再テストしたい場合もあると思います。その場合は new TestSuite?のところをテストクラスにして、Stringに変えればよいのです。文字列(下例ではtestMethodName?)にはメソッド名を指定します。

public static Test suite() {
 TestSuite suite = new TestSuite("Test for Package");
 // suite.addTest(new TestSuite(HogeTest.class));
 suite.addTest(new HogeTest("testMethodName"));
 return suite;
}

こうするとHogeTest?というテストクラスのtestMethodName?というテストメソッドだけが実行されます。

すべてのテストクラスを実行する。

パッケージ内のすべてのテストクラスを実行するAllTests?を作成できたので、サブパッケージを実行するAllTests?クラスをrecursiveに作成すればすべてのテストクラスを実行することができます。

public static Test suite() {
 TestSuite suite = new TestSuite("Test for All Package");
 suite.addTest(hoge.AllTests.suite());
 suite.addTest(fuga.AllTests.suite());
 return suite;
}

こうすると、hogeパッケージ内のすべてのテストクラス*1とfugaパッケージ内のすべてのテストクラス*2が実行されます。


この記事は

選択肢 投票
おもしろかった 10  
そうでもない 1  

Top / Java / JUnit / TIPS集

現在のアクセス:12913


*1 hoge.AllTests?.suite()はあらかじめ作成しておいてね
*2 もちろんこっちもあらかじめつくっとく

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-01-09 (水) 14:45:26 (2415d)