#topicpath
----
//ここにコンテンツを記述します。
#contents

***コマンドラインやantから実行する。 [#x8920489]
今まで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ですね。


***パッケージ内のすべてのテストクラスを実行する。 [#i99606ce]
テスト対象のクラスが増えてくると、それとともにテストクラスが増えてくるわけですが、そのテストクラス群をすべて実行する方法です。まずパッケージ内のすべてのテストクラスを実行するには、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というテストクラスを一連で実行することができます。

***パッケージ内のあるテストクラスのあるテストメソッドだけを実行する。 [#fa08b3f7]
上のやり方はテストクラスの全メソッドを実行してしまいますが、あるメソッドだけ再テストしたい場合もあると思います。その場合は 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というテストメソッドだけが実行されます。


***すべてのテストクラスを実行する。 [#g3599087]
パッケージ内のすべてのテストクラスを実行する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パッケージ内のすべてのテストクラス((hoge.AllTests.suite()はあらかじめ作成しておいてね))とfugaパッケージ内のすべてのテストクラス((もちろんこっちもあらかじめつくっとく))が実行されます。

----
この記事は
#vote(おもしろかった[9],そうでもない[1])
#vote(おもしろかった[10],そうでもない[1])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS