今までEclipseでやってたんでmainメソッドを書いてなかったんですが、antやコマンドラインからやる場合、mainメソッドを作る必要があります。
public static void main(String[] args) {
junit.textui.TestRunner.run(HogeTest.class);
}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が実行されます。
この記事は
現在のアクセス:15373