気の向くままにいろいろと。5.1を用いていろいろと試しています。ヘンゼルとグレーテルでコードをカバーするにて詳しく記載されています(というか、そのページで初めて存在を知ったのですが)。特徴Javaプログラムのカバレージツールの1つ。JUnitのテストケースに数行記述するだけで、カバレッジテストを行うことができます。Testを指定して実行することになります。サンプル内容も何もあったもんじゃないサンプルクラスです(笑)。}}これに対して以下のようなJUnitテストケースを作成。正確にはテストを行っているわけではないのでテストケースとは呼べませんが。}}これを実行した場合、テストは通ります。何もassertしていないので当然ですが(笑)。このテストケースにHanselを組み込むと、以下のような感じになります(メソッドsuite()を用いて、テストスイートとしてテストを実行することになります)。}}このテストケースを実行すると、以下のようなFailureとともにテストが失敗します。SampleClass.check(SampleClass.java:7)1つ目は「3行目のif文においてtrueの場合がテストされていない」ということを、2つ目は「checkメソッドが実行されていない」ということを意味しています。SampleClass.execute(SampleClass.java:3)というようなFailureとともにやはりテストは失敗します。これは先ほどとは逆に「3行目のif文においてfalseの場合がテストされていない」ってことになります(結果の英文がわかりにくいですが・・・)。引数をtrueにした場合とfalseにした場合のexecuteメソッドを実行すれば、とりあえずテストケースは成功することになります。このサンプルは正確にはテストではありませんでしたが、実際にはいろいろなJUnit用のテストケースにHanselを組み込んでカバレッジテストを行いながら開発を行うことになります。補足テスト対象となるクラスが複数ある場合テスト対象のクラスがあるクラスのサブクラスの場合で、そのスーパークラスもカバレッジ測定の対象としたい場合は、suite()メソッドで以下のようなCoverageDecolatorを戻します。})djUnitとの併用CoverageDecoratorを組み込んだテストケースをdjUnitで実行した場合、予期せぬ結果が得られてしまう場合があります。Hanselを用いた場合、カバレッジが100%でないと問答無用でテストケースが失敗してしまうため、場合によっては一時的にHanselを外したい場合もあるかもしれません。その場合、suite()メソッドを毎回コメントアウトするのも面倒なので、通常のテストケースとHansel用のテストケースを分けると楽かもしれません(CoverageDecoratorを作成する際に、実行するテストケースを第1引数で指定するため、別々に存在することが可能になっています)。}}を準備しておいて、必要に応じて実行するテストケースを切り替えるような感じです。J2SE5.0での使用Genericsを用いていた場合に、ClassFormatErrorが発生してテストが実行できない場合があるようです(細かい条件までは調べていませんが)。syo1976スマートフォン版で見る×この広告は60日間更新がないwikiに表示されております。