torutkのブログ

ソフトウェア・エンジニアのブログ

JMockitでカバレッジ計測

JMockit関係はJMockitのチュートリアルドキュメント - torutkのブログの続きとなります。

JMockitユニットテストで使用するモック生成ツールですが、ユニットテストを実行したときにコード実行のカバレッジ計測を行う機能も有しています。
http://code.google.com/p/jmockit/
カバレッジには、以下の2つがあるようです。
# 行カバレッジ
# パスカバレッジ

実施方法(の一つ)は、JMockitに含まれるjmockit-coverage-htmlbasic.jarをクラスパスに含め、JUnit4ユニットテストを実行します。なお、JMockitには、カバレッジ計測のためのJARファイルがこれ以外にも複数あります。用途によって使い分けるというものです。

NetBeans 6.9/Windows OS上での問題点

テストクラスを個別に実行すると、生成されるレポートファイルは最後のテストクラスを実行した結果になる

テストスイートクラスを作成し、これを選んでテストの実行を行います。

カバレッジ計測結果ファイルで各ソースコード表示時、行がずれる、日本語部分が文字化けする

NetBeansのデフォルトがUTF-8だったのでWindows上でもそのままUTF-8ソースコードを記述していました。すると、カバレッジ計測結果の一覧から各ソースファイルのリンクをたどると、カバレッジ指摘行がコードとずれており、また、日本語のコメントが一部化けている部分がありました。文字化けに伴い改行が無視されてしまっている部分があるのが原因です。
NetBeansのプロジェクト・プロパティ設定ファイル(project.properties)の中に、テスト実行時のシステムプロパティを記述する説明があったので、それを追加してみたところ、回避できました。以下の記述で、追加したのは最後の行のtest-sys-prop.file.encoding=UTF-8 です。

# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
    ${javac.test.classpath}:\
    ${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test
test-sys-prop.file.encoding=UTF-8