概要 †jcoverageとは、単体テスト実施時のコードの網羅率など、いわゆるカバレッジを計測するためのツールです。 コードカバレッジツールにもいろいろ方式があるのですが、このjcoverageは
といった方式になっています。よってJUnitで単体テストを実施するときに、元のクラスではなくデバッグを埋め込まれたコードを用いてテスト実施をすることによって、単体テスト実施時のテストの網羅率などを計測することができます。 似たようなツールとして、CoberturaやCloverがあるのですが、CoberturaはJDK1.4以上しか動かないっぽい、Cloverはフリーでない、ということを鑑みてとりあえずjcoverageを使ってみました。 このようなツールって、クライアント環境だけならエイヤでやって動くもんなんですけど、サーバサイドだと結構手順がめんどくさいです。。つまりjcoverage,Junit,Cactus,WEBコンテナ,Eclipseなどの開発ツール、を連携させるのがやたらめんどくさい。 で、ようやく動かしかたぼんやりとではあるのですがわかってきたので、メモっておきます。 ダウンロード †http://www.jcoverage.com/gpl-license.html よりダウンロード可能です。GPLとそうでない用があるみたいで、GPL版がこのさきどんなメンテナンスをされていくのかはよくわかりませんが、とりあえずGPL版をダウンロードします。 基礎 †準備 †まずは基礎の基礎から。しつこいですが、ポイントはコンパイル後、Antタスクなどでデバッグコード埋め込みをしているというところです。つまりコンパイルまでは今までと同じ*1で、そのクラスファイルを動かすのではなくて、デバッグを埋め込んだあとのコードを動かす、ということですね。 やってみます。適当にEclipseでプロジェクトを作成します。そのプロジェクトにダウンロードしてきたファイルを配置して、クラスパスを通しておきます。また、テスト対象クラスとテストケースクラスを作成して下図のように配置しておきます。 とりあえずここまでで、Eclipse上からJunitを起動することができます。 antタスクの作成 †jcoverageにはAntタスクが付属しています。使用するのは主に
です。 全てAntでやる場合は、ソースコードのコンパイル -> instrumentタスクの実行 -> Junitの実行 -> レポーティング となるわけですね。そのようなbuild.xmlを以下に添付します。
ここまででとりあえず実行してみます。Eclipse上からAntを実行しました。実行した内容は ant clean javac instrument です。実行結果は以下のようになりました。 Buildfile: d:\xxxxxx\JCoverageClient\build.xml init: [echo] Apache Ant version 1.6.2 compiled on July 16 2004 [echo] Java ver. 1.3 [echo] JCoverageTest [echo] BaseDir: D:\xxxxxx\JCoverageClient [echo] 日付:2005/09/03 clean: [delete] Deleting directory D:\xxxxxx\JCoverageClient\classes [delete] Deleting directory D:\xxxxxx\JCoverageClient\instrumented-classes [delete] Deleting directory D:\xxxxxx\JCoverageClient\document\JCoverageClient javac.src: [mkdir] Created dir: D:\xxxxxx\JCoverageClient\classes [copy] Copied 1 empty directory to 1 empty directory under D:\xxxxxx\JCoverageClient\classes [javac] Compiling 1 source file to D:\xxxxxx\JCoverageClient\classes test.javac: [javac] Compiling 1 source file to D:\xxxxxx\JCoverageClient\classes javac: instrument: [instrument] jcoverage 1.0.5 copyright (c)2003 jcoverage ltd. http://jcoverage.com/ [instrument] jcoverage is licensed under the GNU General Public License [instrument] jcoverage comes with ABSOLUTELY NO WARRANTY [instrument] instrumenting 2 classes to D:\xxxxxx\JCoverageClient\instrumented-classes [delete] Deleting directory D:\xxxxxx\JCoverageClient\classes [mkdir] Created dir: D:\xxxxxx\JCoverageClient\classes [copy] Copying 2 files to D:\xxxxxx\JCoverageClient\classes BUILD SUCCESSFUL Total time: 6 seconds
Antで実行するタスクもあるのですが、とりあえず、Eclipseから実行。。
以上で完成です。実行結果は以下のようになりました。 カバレッジの一覧 詳細 ちなみに、テスト対象のクラスとテストクラスは以下の通り。
Antの注意点 †こんな障害に巻き込まれました。
Servletなどサーバサイド、J2EE環境で使う。 †関連リンク †この記事は
現在のアクセス:44096 |