連載
» 2006年07月29日 00時00分 公開

Eclipseで使えるテストツールカタログ(4):Eclipseで使える動的テスト支援ツール (4/4)

[珍田晋之介, 岡本隆史,株式会社NTTデータ]
前のページへ 1|2|3|4       

Virtual Mock Object機能による
JUnitテストコードの作成を支援:djUnit

ツール名:djUnit 0.8.0

URL:http://works.dgic.co.jp/djunit/index.html

ライセンス:GPL


 djUnitは作成したテストコードを基にカバレッジレポートを生成します。カバレッジレポートを生成することにより、コード内部の条件判定や分岐処理などのバグの潜在する可能性が高いコード部分が正しくテストされているかどうか、テストの網羅性という観点から容易に検証することが可能です。

 また、もう1つ大きな機能としてVirtual Mock Objectが提供されています。Virtual Mock Objectを利用することで、外部リソースとの依存関係の強いソースコードに対し、JUnitのテストコード生成が容易となります。

 今回は特に、Virtual Mock Objectの機能に注目しながら説明したいと思います。

注:djUnitのプラグインのインストールや、カバレッジレポートの作成方法については、「CoolなEclipseプラグイン(2) ソフトウェアの品質向上を支援するプラグイン」のdjUnitを参照ください。

特徴

 djUnitの特徴は以下になります。

・JCoverageによるレポート生成機能

 djUnitはJCoverageの機能を利用して、Eclipse上でカバレッジ結果を表示することができます。また、テストが実行されていないコード部位をJavaエディタ上に表示します。これにより、テスト漏れが発生した原因を容易に確認することができます。

・Virtual Mock Objectを利用したテスト

 テスト対象クラスがほかのクラスに依存するような場合、通常は依存クラスのモック(またはスタブ)クラスを作成し、テストを実行します。この場合、テスト対象クラスの内容によっては、テスト条件に合わせたスタブを複数作成したり、環境に合わせた複雑な設定などをモッククラスとして作成したりと、テスト実施者にとっては、テスト作成において非常に大きな作業ボリュームになります。

 このような場合に、Virtual Mock Objectsを利用することで、テストを容易に実施することが可能になります。

 簡単な例を挙げて上記の説明を行います。

・モックを使用したテスト

 クラスAがクラスBに依存するような場合、依存するクラスBをモッククラス(スタブクラス)として、作成します。このとき、モッククラスはテスト条件に合わせて複数作成する必要があります。また、クラスの仕様変更や環境の変更が入る場合には、テストクラスと同様にメンテナンスの対象となります。このため、テスト実施者の作業負担がかなり大きいものになります。

 これをVirtual Mock Objectを利用したテストで実施する場合、Virtual Mock Objectが提供するテストメソッドを呼び出し、テスト条件に合わせたテストデータを引数として与えるだけでテストを実施することができます。モックの作成、およびメンテナンス稼働を削減することができます。

図12 モックを使用したテストとVirtual Mock Objectを使用したテスト 図12 モックを使用したテストとVirtual Mock Objectを使用したテスト

入手方法

 djUnitのプラグインをインストールする方法は、「CoolなEclipseプラグイン(2) ソフトウェアの品質向上を支援するプラグイン」のdjUnitを参照ください。

使い方

 Virtual Mock Objectsを利用したテストコードの作成は、以下の手順にて行います。

[作成手順]

1.Virtual Mock Objects の設定の有効化

2.ビルドパスへのdjUnitライブラリの追加

3.djUnitテストコードの作成

4.djUnitテストコードの実行

・Virtual Mock Objects の設定の有効化

 djUnitの初期設定では、Virtual Mock Objects の設定が有効になっていないため、使用する前に有効化する必要があります。作成したプロジェクトを選択した状態で右クリックし、コンテキストメニューから[プロパティー]を選択してください。プロパティダイアログの左のツリーから[djUnit]を選択します。ダイアログの右側に表示されるdjUnitの設定画面にて、[Virtual Mock Objects]タグを選択し、[Virtual Mock Objects を使用する]のチェックボックをチェックします。

図13 Virtual  Mock Objects の設定の有効化 図13 Virtual Mock Objects の設定の有効化

・ビルドパスへのdjUnitライブラリの追加

  前述で説明したVirtual Mock Objects の設定と同様にプロジェクトのプロパティダイアログを表示します。プロパティダイアログの左ツリーから[Javaのビルドパス]を選択し、djUnitのプラグイン配下に含まれているdjunit.jarファイルを追加します。

図14 ビルドパスへのdjUnitライブラリの追加 図14 ビルドパスへのdjUnitライブラリの追加

・djUnitテストコードの作成

 Virtual Mock Objectsを利用したdjUnitのテストコードを作成します。以下では簡単な例として、大人と子供の人数を入力すると、合計金額を出力するクラスに対してテストコードを作成します(図15:PreOrderクラス参照)。

 このクラスでは、金額計算のプライベートメソッドにて、外部リソースを呼び出しています。このため外部リソースからの値の取得部分をVirtual Mock Objectsを利用し、外部リソースと分離した形でテスト対象クラスをテストします(図16:PreOrderTestクラス参照)。

図15 PreOrderクラス 図15 PreOrderクラス
図16 PreOrderTestクラス 図16 PreOrderTestクラス

・djUnitテストコードの実行

 実行したいdjUnitテストケースを選択した状態で、右クリックを行い、コンテキストメニューから[実行]→[djUnitテスト]を選択します(図17)。実行結果としてカバレッジレポートのほか、JUnitビューにテストの実行結果が表示されます。

図17 djUnitテスト実行画面 図17 djUnitテスト実行画面

 今回は、JUnitによる単体テストを支援するツールを紹介してきました。次回はテストの品質をさらに一歩改善するに当たって有効な機能テストに関するツール群を紹介します。


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。