Top / Java / Ant / Unitテストツール

今回は以下のUnitテスティングツール
Clover を試用してみました。

概要

サイトの引用ですが、

Unit tests drive code quality;
Clover drives unit test quality. 

ということだそうです。UnitTest?が効率よくできればよいんですが。。

インストール

Antのタスクだそうで、build.xmlを使用する際に、

<path id="build.classpath">
	<pathelement path="../lib/clover.jar" />
	<pathelement path="${ant.home}/lib/junit.jar"/>
</path>

とパスを通すこと、あとは${ANT_HOME}/lib/にclover.jarを置けばOKです。

Tutorialの準備

Tutorialをやってみました。Tutorialに添付されたファイルは、とりあえずJUnitが稼動するまでのファイルになっていて、チュートリアルに沿ってファイルを修正していく、というものです。 いまのところ、

clover.jarにクラスパスを通す
<path id="build.classpath">
	<pathelement path="../lib/clover.jar" /> 
	<pathelement path="${ant.home}/lib/junit.jar"/>
	<pathelement path="${build}"/>
</path>

タスクの一斉定義
<taskdef resource="clovertasks" >
	<classpath refid="build.classpath"/>
</taskdef>

clover初期化(?)タスク
<target name="with.clover">
	<clover-setup initString="demo_coverage.db"/>
</target>

を追加しました。んで、いままで

ant code <-コンパイルタスク

としていたところを

ant with.clover code

とすると、コンパイルをフックしてcloverがなんかをやっているみたいです。実行結果は

code:
 [javac] Compiling 4 source files to xxxxxxx
 [clover] Clover Version 1.2.4, built on December 01 2003
 [clover] loaded from: file:/C:/javatools/ant/lib/clover.jar
 [clover] 30 day Evaluation License registered to m-kino@xxxxxx
 [clover] You have 29 day(s) before your Evaluation License expires.
 [clover] No coverage database 'xxxxxx\demo_coverage.db' found. Creating a fresh one.
 [clover] Clover all over. Instrumented 4 files.

となりました。(バイトコードに何か処理を追加しているんでしょうか。そのコードをテストして意味があんのかって話はあるよね)*1

使い方

先ほどの通り、コンパイルタスクの前にwith.cloverタスクを実行することで、テスト結果データベースなどを作成するみたいです。あとはant testなどを行うと、そのデータベースに情報が書き込まれて蓄積されていく仕様みたいです。さて、次はテストレポートを作成しましょう。 以下のタスクを追加します。

<target name="report.html" depends="with.clover">
	<clover-report>
		<current outfile="clover_html" title="clover demo">
			<format type="html"/>
		</current>
	</clover-report>
</target>

そして

ant report.html

JavaDoc?風のレポートが作成されました。

GUIを使用する

<target name="clover.view" depends="with.clover">
  <clover-view/>
</target>

を実行することで、

image.png

が起動します。ここから、PDFの生成とかができるみたいです。

うまくいかないことがありました。

どれだけantを実行しても、

[clover-report] No coverage data found for 'hogehoge\mycoverage.db'.
[clover-report] No coverage recordings found. No report will be generated.

となってしまうことがありました。

何のことはなく、testディレクトリにテストケースを入れていたのですが、そこのコンパイルを忘れていたため、ホントにJunitが実行されていないのが原因でした。


この記事は

選択肢 投票
おもしろかった 4  
そうでもない 0  

Top / Java / Ant / Unitテストツール

現在のアクセス:9204


*1 デコンパイルしてみたら、たしかにcloverパッケージのクラスをimportしてなんか使ってました。

添付ファイル: fileimage.png 573件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-10-26 (水) 15:36:47 (2548d)