« SwingのGUI Testingツールを調査した | トップページ | FESTを使用してJava GUI (Swing)のテストを実行してみる »

2009/02/11

NetBeansでcoverage reportを行う

  • できること
    • NetBeansでJUnitテストを実施(Alt+F6などで)する際、同時にカバレッジを測定する。
    • 結果をhtmlで出力する。
  • できないこと
    • IDEとの完全な統合。Eclipse+djUnitであれば、こんなふうに未実行のラインをタスク一覧に表示できたりするようだが、今回の方法では不可能。
    • プロジェクトごとにカバレッジ測定用のAntタスクを追記する必要がある。新規プロジェクトを作成し、このプロジェクトでもカバレッジ測定を行いたい場合は、同じような設定を追記しなければならない。
    • 前回採取したカバレッジと今回結果をマージして出力、といったこともできるはずだが、そこまで考慮できていない。
    • テストクラスを選択してSHIFT+F6を押せば、そのファイルだけJUnitを走らせることができるが、これが機能しなくなる(正常に実行できない)。

 

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をインストールしたディレクトリを指定する。

cobertura01 

既に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ファイルを開く。

cobertura02

最終行に、下記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)のテストを実行してみる »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/18902/44030737

この記事へのトラックバック一覧です: NetBeansでcoverage reportを行う:

« SwingのGUI Testingツールを調査した | トップページ | FESTを使用してJava GUI (Swing)のテストを実行してみる »

other sites

  • follow us in feedly
  • github
  • stackoverflow

ソフトウェアエンジニアとして影響を受けた書籍

  • Christain Bauer: HIBERNATE イン アクション

    Christain Bauer: HIBERNATE イン アクション
    理論と実践が双方とも素晴らしい製品であるHibernate。本書はそのプロダクトを書名に冠していますが、Hibernateを使うつもりがなく、ORマッピングの解説書として読むにしても十分な良書です。Second EditionとしてJava Persistence With Hibernateという書籍も出版されていますが、残念ながら現在のところ 和訳はされていません。-インアクションは2.xの、Java Persistence-は3.1の頃のものなので、最新版とはちょっと違うところもあることに注意。 (★★★★★)

  • アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版

    アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版
    クライアント/サーバシステムを構築する上で必要となる知識が総論されてます。Web技術者も、フレームワーク部分を開発するのであれば必読。 (★★★★★)

  • Joel Spolsky∥著: ジョエル・オン・ソフトウェア

    Joel Spolsky∥著: ジョエル・オン・ソフトウェア
    前述の書籍「ソフトウエア開発プロフェッショナル」をより砕いたもの、という感じでしょうか。 前書きではプログラマでなくSE向けの本のように書かれているが、プログラマが読んでも面白い本であると思われます。 SEになった新人(あるいはそういう会社に入る/入りたての人)にとっては、これからどういったことが仕事を遂行していく上で起こりえるのか、どのように考えて行なっていけばいいのか決定する助けになると思います。 元は″Joel on Software″というブログの記事で、web上でも一部日本語で読めます。 http://japanese.joelonsoftware.com/ (★★★)

  • ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか

    ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか
    問題解決(一昔前のの流行語で言うところの『ソリューション』)能力は、システムエンジニアのスキルとして備えるべきもののうちのひとつです。しかし、これは難しい。学校で出されるテストと違い、唯一の、(問題提出者が想定している)解を求めるだけが「問題解決」では無いからです。そもそも、何が問題なのか、それは本当に問題なのか、それは本当に解決すべき問題なのか、その問題解決方法は正しいのか、などを解決しなければ、「その解は正しいのか」に辿りつくことができません。この本の最も良いところのひとつは、本があまり厚くないこと。すぐに読めるし、何回も読み返す気になるでしょう。 (★★★★★)

  • スティーブ・マコネル: ソフトウエア開発プロフェッショナル

    スティーブ・マコネル: ソフトウエア開発プロフェッショナル
    コードコンプリートで有名なスティーブマコネルの著書。新人SEに読んで欲しい。個人として業界の中でどうあるべきか、組織としてどうあるべきか、SEのプロ意識とは?SEの心構え概論、といったところでしょうか。また、業界における資格の重要性についても説かれています。この業界では資格が特に軽んじられる傾向がありますが、この傾向はどんな弊害をもたらすのか、将来的にこの業界は資格に対してどのような姿勢で臨んでいくべきなのか。日経BP社では(他の出版社もだが)最近、似たような類いのあまり面白くない書籍が乱出版されていますが、この本は別格だと思うので安心して購入して欲しいと思います。 (★★★★★)

無料ブログはココログ