NetBeansでcoverage reportを行う
- できること
- NetBeansでJUnitテストを実施(Alt+F6などで)する際、同時にカバレッジを測定する。
- 結果をhtmlで出力する。
- できないこと
NetBeans上でカバレッジ測定を行えるものを探したところ、Unit Tests Code Coverage Pluginというものがあった。しかし、インストールしてみたところ、プロジェクト一覧のツリーで右クリックが行えなくなり(プラグイン内部でNullPointerExceptionが発生しているようだ)、私の環境では全く利用できなかった。
そこで、djUnitが内部で用いているjcoverage(GPL版)の後継であるCoberturaを、NetBeansのAntタスクで実行することにした。このときのWindowsでの設定手順を下記に示す。
環境変数ANT_HOMEの設定
マイコンピュータを右クリック>プロパティでシステムのプロパティダイアログを開き、詳細設定タブの環境変数ボタンを押す。
表れた環境変数ダイアログで、新規ボタンを押し、ユーザの環境変数を追加する。
変数名 | ANT_HOME |
変数値 | <netbeans-install-root>/java2/ant |
なお<netbeans-install-root>は、実際には下記のキャプチャのような、NetBeansをインストールしたディレクトリを指定する。
既にNetBeansを起動しているのであれば、環境変数を有効にするために一旦終了させる必要がある。
Coberturaのインストール
Coberturaのダウンロードサイトから、バイナリをダウンロードして展開する。なお、現在の最新バージョンは1.9.1だったため、今回はこれを用いた。
展開後、cobertura.jar及びlib以下のasm-3.0.jar, asm-tree-3.0.jar, jakarta-oro-2.0.8.jar, log4j-1.2.9.jar(要するにjunit以外のjar)を、<netbeans-install-root>java2/ant/lib以下にコピーする。
以下は、カバレッジ測定するプロジェクトごとに設定が必要である。
project.propertiesの編集
NetBeansのファイル一覧ウィンドウから、対象プロジェクトの<project-name>/nbproject/project.propertiesファイルを開く。
最終行に、下記3行を追記する。
build.instrumented.dir=${build.dir}/instrumented
build.report.dir=${build.dir}/report
build.report.cobertura.dir=${build.report.dir}/cobertura
続いて、run.test.classpath設定箇所を探し、下記の通り書き換える。
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}
build.xmlの編集
<project-name>/build.xmlを開く。
最終行</project>の直前行に、以下を追記する。
<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>
以上の設定を行った上で、テストを実行すれば、build/report/cobertura/index.htmlにレポートが生成される。
参考:
« SwingのGUI Testingツールを調査した | トップページ | FESTを使用してJava GUI (Swing)のテストを実行してみる »
この記事へのコメントは終了しました。
« SwingのGUI Testingツールを調査した | トップページ | FESTを使用してJava GUI (Swing)のテストを実行してみる »
コメント