質問: JUnitを使い、Coberturaでカバレッジの計測をしたいのですが。 junit-4.12.jar hamcrest-core-1.3.jar 以下略名junit-4.jar、hamcrest-core-1.jar コンパイル時 >javac -cp .;junit-4.jar;hamcrest-core-1.jar Account.java AccountTest2.java 実行時 >java -cp .;junit-4.jar;hamcrest-core-1.jar org.junit.runner.JUnitCore AccountTest2 JUnitはhamcrest-coreがないとうまく行きません。 コンパイル時はともかく、実行時に一緒にクラスパスを通さないと期待通りの結果になりません。 ネットで調べたらJUnitはhamcrest-coreと依存関係にあるということです。 この方法できます。 上記のように打ち込むと期待通りに実行できます。 以降は、これに則ってやっていくしかないのですが、 カバレッジの計測が出力できません。 Coberturaのサイトは以下に cobertura.github.io/cobertura/に飛びます。 cobertura2.1.1はバージョンです。 カバレッジの計測 手順(1)テストクラスのカラクリの仕込み >javac -cp .;junit-4.jar;hamcrest-core-1.jar Account.java AccountTest2.java >c:\cobertura-2\cobertura-instrument.bat AccountTest2.class 手順(2)仕込み済みのテストクラスの実行 >java -cp .;junit-4.jar;hamcrest-core-1.jar org.junit.runner.JUnitCore AccountTest2 Exception in thread “main” java.langNoClassDefFoundError : net/sourceforge/cobertura/coveragedata/TouchCollector このエラーが出て実行できません。 Coberturaのバッチで改造したクラスファイルが実行できません。 Coberturaのバッチで改造する前のクラスファイルは実行でき、テスト成功します。 困っています。 コマンドラインから、JUnitを使い、Coberturaでカバレッジの計測をしたいのですが、 計測のためCoberturaのバッチでクラスファイルを改造して実行してカバレッジを計測するのですが、改造したクラスファイルがエラーになり実行できません。 Coberturaが使いこなせません。
回答: Cobertura詳しくないので、あまり自信がありませんが。 改造したテストコードの中で、`TouchCollector`というCobertura固有のクラスを使用しているのではないでしょうか。 その場合、実行時のクラスパスにそのクラスを含むJARファイルもクラスパスに通す必要があります。 また、Coberturaが参照するライブラリーもクラスパスに通す必要があります。 以下のようにしてみてください。 ``` java -cp .;C:\cobertura-2\cobertura-2.1.1.jar;C:\cobertura-2\lib\* org.junit.runner.JUnitCore AccountTest2 ``` `*`のところはワイルドカードで、ディレクトリー以下のJARファイルをすべてクラスパスに追加する記法です。 こうすると、`junit-4.jar`、`hamcrest-core-1.jar`の指定も兼ねるので、個別に指定する必要は無くなります。