NetBeansでカバレッジツールのCoberturaを使用する方法

Java用のテスト網羅率測定ツールCoberturaは簡単に設定出来ます。ここに備忘録を記します。

使用した環境

OS: Windows XP
IDE: NetBeans IDE 6.8
JDK: 1.6

Coberturaの導入

本家WEBサイトの
http://cobertura.sourceforge.net/index.html
以下のページのリンクよりダウンロードします。
http://cobertura.sourceforge.net/download.html

cobertura-1.9.3-bin.zip

環境変数ANT_HOMEの設定

ユーザー環境変数に以下を追加します。(※NetBeans IDEをインストールしたフォルダ配下)

ANT_HOME
C:\Program Files\NetBeans 6.8\java3\ant

Coberturaライブラリのインストール

C:\Program Files\NetBeans 6.8\java3\ant\lib

上記の例のように、Antのライブラリフォルダに以下のJarライブラリを配置します。

  • cobertura.jar
  • asm-3.0.jar
  • asm-tree-3.0.jar
  • jakarta-oro-2.0.8.jar
  • log4j-1.2.9.jar

project.propertiesの編集

/nbprojects/project.properties

設定ファイルの記述箇所を、以下のように追加変更します。

run.test.classpath=\
${env.ANT_HOME}/lib/asm-3.0.jar:\
${env.ANT_HOME}/lib/asm-tree-3.0.jar:\
${env.ANT_HOME}/lib/cobertura.jar:\
${env.ANT_HOME}/lib/jakarta-oro-2.0.8.jar:\
${env.ANT_HOME}/lib/log4j-1.2.9.jar:\
${build.instrumented.dir}:\
${javac.test.classpath}:\
${build.test.classes.dir}

また、同じファイルの最終行に下記の設定を追記します。

# For Cobertura
build.instrumented.dir=${build.dir}/instrumented
build.report.dir=${build.dir}/report
build.report.cobertura.dir=${build.report.dir}/cobertura

build.xmlの編集

/build.xml

上記のファイルの最後に、以下の設定を追加します。(※の前に書きます)

<property environment="env"/>
<taskdef classpath="cobertura.jar" resource="tasks.properties"/>
<target name="-pre-compile-test">
    <delete dir="${build.instrumented.dir}" />
    <delete dir="${build.report.cobertura.dir}" />
    <mkdir dir="${build.instrumented.dir}" />
    <mkdir dir="${build.report.cobertura.dir}" />
    <cobertura-instrument todir="${build.instrumented.dir}">
    <fileset dir="${build.classes.dir}">
    <include name="**/*.class"/>
    </fileset>
    </cobertura-instrument>
</target>
<target name="-post-test-run">
    <!--You can disable the html portion if you are using the hudson plugin and rely on the xml-->
    <cobertura-report format="html" srcdir="${src.dir}" destdir="${build.report.cobertura.dir}"/>
    <!--Used by the hudson plug-in-->
    <cobertura-report format="xml" srcdir="${src.dir}" destdir="${build.report.cobertura.dir}"/>
    <delete file="cobertura.ser" />
</target>

テストの実行

プロジェクトの[テスト]実行で以下のフォルダにレポートのHTMLが生成されます。

/build/report/cobertura/index.html

※この設定では、ファイル単体のテストでカバレッジレポートは出力されません。

思ったこと

  • 単体テスト網羅率がグラフィカルに確認出来るので楽しいです。
  • NetBeans IDE には、標準でこのカバレッジツールに対応して欲しいと思いました。
  • Hudsonのプラグインがあるみたいなので、CI連携も試したいと思いました。