目的:
Eclipse Test and Performance Tools Platform (TPTP) を使用してサンプル・テスト・アプリケーションからデータ・プールを作成し、アクセスします。
所要時間
1 時間
このチュートリアルを開始する前に、以下を行う必要があります。
-
Eclipse および Eclipse Test and Performance Tools Platform (TPTP) をインストールします。
- JUnit テストの基本を理解します。
JUnit テストについて詳しくは、www.junit.org を参照してください。
- 使用している TPTP バージョンに合った Agent Controller を構成し、実行します。詳細は、『
Getting started with the Agent Controller』を参照してください。
説明
このチュートリアルでは、MyShoppingCart というアプリケーションを作成、テストします。
Eclipse Test and Performance Tools Platform (TPTP)
を使用して、JUnit テストを開発し、テスト環境にデータを提供するデータ・プールを作成します。
このチュートリアルでは、以下の手順に沿って説明していきます。
- サンプル・ユーザー・アプリケーションの作成
- TPTP テスト・スイートのセットアップ
- データ・プールの作成とテスト・データの初期化
- データ・プールを参照するようにテスト・ケースを変更
このステップでは MyShoppingCart クラスを開発します。以降のステップでは、Eclipse Test and Performance Tools Platform を使用してテスト環境を開発します。
- 新規の Eclipse Java プロジェクトを作成します。
- 「ファイル」メニューから、「ファイル」>「新規」>「プロジェクト...」と選択します。「新規プロジェクト」ダイアログが表示されます。
- 「ウィザード」リストで、「Java プロジェクト」を選択し、「次へ」をクリックします。「Java プロジェクトの作成」ページが表示されます。
- プロジェクト名に datapoolExample を入力し、「終了」をクリックします。
datapoolExample プロジェクトが「ナビゲーター」ビューに表示されます。
- MyShoppingCart クラスを作成します。
- 「ナビゲーター」ビューで、datapoolExample プロジェクトを右クリックし、「新規」>「クラス」と選択します。「新規 Java クラス」ダイアログが開きます。
- 「名前」フィールドに MyShoppingCart を入力します。
- メイン・メソッドの public static void main(String[] args) を作成するオプションをクリアします。
- 「終了」をクリックします。MyShoppingCart.java ファイルが Java エディターに表示されます。
- 次のように MyShoppingCart ソースを入力します。
import java.util.*;
public class MyShoppingCart {
public Hashtable myFlowers;
public MyShoppingCart() {
myFlowers = new Hashtable();
myFlowers.put("Orchid", new Double(5.99));
myFlowers.put("Tulip", new Double(1.99));
myFlowers.put("White Poinsee", new Double(6.99));
myFlowers.put("White Rose", new Double(9.99));
myFlowers.put("Geraniums", new Double(4.99));
}
public double itemCost(String itemName, int itemQuantity)
{
Double price = (Double)myFlowers.get(itemName);
if (price != null) {
return price.doubleValue()*itemQuantity;
}
return -1;
}
}
- MyShoppingCart.java を保管します。「ファイル」メニューから、「ファイル」>「保管」と選択します。
このステップでは MyShoppingCart クラスのテスト・スイートを開発します。
Eclipse Test and Performance Tools Platform を使用して、itemCost メソッドの JUnit テストを開発します。
- テスト・パースペクティブを開きます。
- 「ファイル」メニューから、「ウィンドウ」>「パースペクティブを開く」>「その他」を選択
します。
- 「テスト」を選択し、「OK」をクリックします。テスト・ナビゲーターが表示されます。
- 新規の TPTP JUnit テストを作成します。
- テスト・ナビゲーターで、datapoolExample プロジェクトを右クリックし、「新規」>「テスト要素...」と選択します。
- 「テスト要素」ダイアログで、「TPTP JUnit テスト」を選択し、「次へ」をクリックします。「新規テスト・ケース」ダイアログが開き、JUnit ライブラリーの追加を求められます。「はい」をクリックして、JUnit ライブラリーを追加します。
- 「新規 JUnit テスト・ソース・コード」ページで、「名前」フィールドに shoppingCartTest_src を入力します。「テストの振る舞いを編集する方法を選択」セクションで、「テスト・エディター」オプション
(デフォルト) を選択します。
- 「終了」をクリックします。
TPTP JUnit テスト・エディターが表示され、shoppingCartTest_src テスト・スイートが示されます。「概要」タブではテストの説明、ソース情報、テスト・メソッド・リストが表示されます。現在、テスト・メソッドは定義されていません。
このチュートリアルでは、TPTP JUnit テスト・エディターはメソッド・スタブを生成するので、「ソース情報」セクションの
「テストの振る舞いをコードとして実装」オプションをクリアする必要があります。詳しくは、『JUnit テスト・スイート・エディター』を参照してください
- testItemCost および testShoppingCartConstructor メソッドを追加します。
- 「テスト・メソッド」タブで「追加」をクリックします。テストのデフォルト名が表示されます。
- testItemCost メソッドを追加します。「名前」フィールドに、新しいテスト名として testItemCost と入力します。「説明」フィールドで、Test for the MyShoppingCart.itemCost(String, int) method と入力します。
- testShoppingCartConstructor メソッドを追加します。「テスト・メソッド」タブで「追加」をクリックします。「名前」フィールドに、新しいテスト名として testShoppingCartConstructor と入力します。「説明」フィールドで、Test for the MyShoppingCart constructor と入力します。
- テスト実行の振る舞いを構成します。
- テスト実行ループを追加します。「振る舞い」タブで「追加...」>「ループ」とクリックします。「名前」フィールドに Loop_MyShoppingCart と入力します。「反復回数」フィールドで 1
(デフォルト値) を入力します。
- testShoppingCartConstructor 呼び出しを追加します。
Loop_MyShoppingCart を選択し、「追加...」>「呼び出し」とクリックします。「テストの呼び出し」ダイアログが表示されます。
testShoppingCartConstructor を選択し、「OK」をクリックします。
- testItemCost 呼び出しを追加します。
Loop_MyShoppingCart を選択し、「追加...」>「呼び出し」とクリックします。「テストの呼び出し」ダイアログが表示されます。
testItemCost を選択し、「OK」をクリックします。
- テスト・スイートを保管します。「ファイル」メニューから、「ファイル」>「保管」を選択
します。
注: 「保管」コマンドを使うと、TPTP JUnit テスト・エディターが shoppingCartTest_src.java
にテスト・メソッド・スタブを作成するので注意してください。
-
生成されたテスト・メソッドの testShoppingCartConstructor および testItemCost にコードを入力します。
- Java パースペクティブを開きます。「ファイル」メニューから、「ウィンドウ」>「パースペクティブを開く」>「その他...」>「Java」と選択します。
- shoppingCartTest_src.java を開きます。 ナビゲーターで、datapoolExample プロジェクト・フォルダーを開き、
shoppingCartTest_src.java をダブルクリックします。 shoppingCartTest_src.java の内容が Java エディターに表示され、この中にはテスト・スイートをセットアップ、実行するコードと、testShoppingCartConstructor および testItemCost のスタブ・メソッドが含まれています。
- testShoppingCartConstructor メソッドのコードとして以下を入力します。
public void testShoppingCartConstructor()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
Double priceOrchid = (Double)cart.myFlowers.get("Orchid");
Double priceTulip = (Double)cart.myFlowers.get("Tulip");
assertTrue(priceOrchid.doubleValue() == 5.99);
assertTrue(priceTulip.doubleValue() == 1.99);
}
- testItemCost メソッドのコードとして以下を入力します。
public void testItemCost()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
double priceForTwo = cart.itemCost("Orchid", 2);
assertTrue(priceForTwo == 11.98);
}
- shoppingCartTest_src.java を保管します。「ファイル」メニューから、「ファイル」>「保管」を選択します。
- テスト・パースペクティブを開き、テスト用デプロイメントを作成します。サンプルについては、『テスト用デプロイメントの作成』を参照してください。
-
カスタム・デプロイメントを使用してテストを実行します。
- テスト・ナビゲーターで、shoppingCartTest_src
テスト・スイートを右クリックし、「実行」>「構成および実行...」と選択します。「構成および実行」ダイアログが表示されます。
- 「構成」ペインで、「テスト」を選択し、「新規」をクリックします。
- 「構成および実行」ダイアログの左ペイン (「実行するテストの選択」) で、datapoolExample
を展開し、shoppingCartTest_src テスト・スイートを選択します。
- 「構成および実行」ダイアログの右ペインで、作成したデプロイメントを選択します。
- 「テスト・ログ」タブで、「デフォルトを使用」オプションをクリアし、ロケーションの datapoolExample プロジェクト・フォルダーを選択します。
- 「実行」をクリックしてテストを起動します。
- shoppingCartTest_src テスト・ログをダブルクリックすると、これがテスト・ナビゲーターに表示されます。
shoppingCartTest_src テスト・ログが表示されます。「イベント」タブを選択してテスト詳細を表示します。表示されるイベントは、テスト・スイートの開始、Loop_MyShoppingCart の開始、テストの開始、テストの判断、テストの停止、第 2 テストの開始、第 2 テストの判断、第 2 テストの停止、ループの停止、テスト・スイートの判断、テスト・スイートの停止です。

このステップでは、テスト・データを保管するための単純なデータ・プールを作成します。データ・プール・エディターを使用して、データ・プールの構造要素を定義します。構造要素は変数 (列)、レコード (行)、等価クラス (関連レコードの集団) です。
- テスト・データを含む CSV (コンマで区切られている) ファイルを作成します。通常、スプレッドシート・アプリケーションのデータやデータベースを CSV 形式でエクスポートできます。しかしこのチュートリアルでは、テキスト・エディターでデータを入力します。
- テキスト・エディターで次の内容を入力します。
,ModelNumber::String,Description::String,Price::Double
flowers,F0001,Orchid,5.99
flowers,F0002,Tulip,1.99
flowers,F0003,White Poinsee,6.99
flowers,F0004,White Rose,9.99
flowers,F0005,Geraniums,4.99
- これを、一時的な外部の場所に flowerData.csv というファイルで保管します。
- Eclipse でテスト・パースペクティブを開きます。
- 「ファイル」メニューから、「ウィンドウ」>「パースペクティブを開く」>「その他」を選択
します。
- 「テスト」を選択し、「OK」をクリックします。テスト・ナビゲーターが表示されます。
- テスト・ナビゲーターで、プロジェクトを右クリックし、
「新規」>「テスト要素...」と選択します。
「新規テスト要素」ダイアログが開きます。
- 「ウィザード」リスト・ボックスで、「テスト資産」フォルダーを展開し、
「データ・プール」を選択します。
- 「次へ」をクリックします。
「新規データ・プール」ダイアログが表示されます。
- データ・プール・プロジェクト・フォルダーとデータ・プール名を選択します。既存プロジェクトのリスト内で、datapoolExample プロジェクトを選択します。
「名前」フィールドに shoppingCartDatapool と入力します。「次へ」をクリックして先へ進め、さらに「次へ」をクリックすると、CSV (コンマで区切られている) ファイルのインポート・ページが開きます。
- CSV ファイルの flowerData.csv をインポートします。
- 「CSV ファイル」フィールドで、「参照」をクリックし、
flowerData.csv にナビゲートします。
- 「変数名と推薦される型を含む最初の行」オプションにチェック・マークを付けます。flowerData.csv
の第 1 行に列見出しとタイプが含まれます。
- 「等価クラス名を含む最初の列」オプションにチェック・マークを付けます。等価クラスは、関係するデータをグループ化します。flowerData.csv の第 1 列は flowers という単一の等価クラスを指定します。
- 「終了」をクリックします。
初期データ・プールの大きさを指定した場合、CSV ファイル・サイズと競合することがあり、ダイアログが表示されます。「はい」をクリックすると、CSV ファイルのサイズを使います。「いいえ」をクリックすると、指定された初期のサイズを使います (CSV ファイルのデータを切り捨てる可能性があります)。
データ・プール・エディターが現れ、flowers 等価クラスに含まれるデータが表示されます。
データ・プール作成の詳細は、『データ・プールの作成』を参照してください。
このステップでは、データ・プール API を使用して、ハードコーディングされたテスト値をデータ・プール列への参照に置き換えます。
データ・プール API が必要とするライブラリーの追加
データ・プール API はさまざまな TPTP ライブラリーと Eclipse Modeling Framework (EMF) ライブラリーを必要とします。ここでは、これらのライブラリーを Java ビルド・パスに追加します。
- Java パースペクティブを開きます。「ファイル」メニューから、「ウィンドウ」>「パースペクティブを開く」>「Java」と選択します。
- datapoolExample プロジェクトのプロパティーを開きます。「ナビゲーター」ウィンドウまたは「パッケージ・エクスプローラー」ウィンドウで、「datapoolExample」プロジェクト・フォルダーを右クリックし、プロパティーを選択します。「datapoolExample のプロパティー」ダイアログが表示されます。
- tptp-models.jar を Java ビルド・パスに追加します。
-
左ペインで「Java ビルド・パス」を選択します。
- 右ペインで、「ライブラリー」タブを選択し、「変数の追加...」をクリックします。「新規変数クラスパス・エントリー」ダイアログが表示されます。
- ECLIPSE_HOME 変数を選択し、「拡張...」をクリックします。「変数拡張」ダイアログが表示されます。「plugins」> org.eclipse.tptp.platform.models_Version
フォルダーを開き、tptp-models.jar を選択します。ここで、Version は使用している TPTP バージョン番号です。
- 「OK」をクリックしてライブラリーを追加します。
- org.eclipse.emf.common_Version.jar を Java ビルド・パスに追加します。ここで、Version は EMF バージョンです。
-
「新規変数クラスパス・エントリー」ダイアログで、ECLIPSE_HOME 変数を選択し、「拡張...」をクリックします。
- plugins フォルダーを開き、org.eclipse.emf.common_Version.jar を選択します。ここで、Version は EMF バージョンです。
- 「OK」をクリックしてライブラリーを追加します。
- org.eclipse.emf.ecore_Version.jar を Java ビルド・パスに追加します。ここで、Version は EMF バージョンです。
- 「新規変数クラスパス・エントリー」ダイアログで、ECLIPSE_HOME 変数を選択し、「拡張...」をクリックします。
- プラグイン・フォルダーを開き、org.eclipse.emf.ecore_Version.jar を選択します。ここで、Version は EMF バージョンです。
- 「OK」をクリックしてライブラリーを追加します。
- org.eclipse.core.runtime_Version.jar を Java ビルド・パスに追加します。ここで、Version は Eclipse プラットフォームのバージョンです。
- 「新規変数クラスパス・エントリー」ダイアログで、ECLIPSE_HOME 変数を選択し、「拡張...」をクリックします。
- プラグイン・フォルダーを開き、org.eclipse.core.runtime_Version.jar を選択します。ここで、Version は Eclipse プラットフォームのバージョンです。
- 「OK」をクリックしてライブラリーを追加します。
- 「OK」をクリックして「プロパティー」ダイアログを閉じます。
データ・プール API の使用
このステップでは、shoppingCartTest_src クラスと testShoppingCartConstructor メソッドを変更して
shoppingCartDatapool を使用します。
- 必要に応じて、Java パースペクティブを開きます。「ファイル」メニューから、「ウィンドウ」>「パースペクティブを開く」>「Java」と選択します。
- shoppingCartTest_src.java を開きます。 ナビゲーターで、datapoolExample プロジェクト・フォルダーを開き、
shoppingCartTest_src.java をダブルクリックします。 shoppingCartTest_src.java の内容が Java エディターに表示されます。
- 次のインポート・ステートメントを shoppingCartTest_src クラスに追加します。
import org.eclipse.hyades.models.common.datapool.impl.*;
import org.eclipse.hyades.execution.runtime.datapool.*;
- IDatapoolIterator クラス・インスタンスを宣言します。このクラス・インスタンスはセットアップ・コードで初期化され、テスト・メソッドで使用されます。
public class shoppingCartTest_src extends HyadesTestCase {
IDatapoolIterator dpIterator;
//...
- setUp メソッドを変更してデータ・プールを初期化します。
TPTP JUnit テスト環境で、setUp メソッドは共通の機能を提供します。
setUp を使用して共通のテスト変数を初期化します。
注: java.io.File コンストラクターの <workspace> の場所に完全修飾パスのワークスペースを指定してください。
protected void setUp() throws Exception {
// Initialize the datapool factory
IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
// Load the shoppingCartDatapool datapool
IDatapool datapool = dpFactory.load(
new java.io.File("<workspace>\\datapoolExample\\shoppingCartDatapool.datapool"),
false);
// Create an iterator to traverse the datapool
dpIterator = dpFactory.open(datapool,"org.eclipse.hyades.datapool.iterator.DatapoolIteratorSequentialPrivate");
// Initialize the datapool to traverse the first equivalence class.
dpIterator.dpInitialize(datapool,0);
}
注:
- IDatapoolFactory ロード・メソッドの第 2 パラメーターは、データ・プール・インスタンスが共用されているかどうかを示します。
true の場合、データ・プールの既存コピーについてデータ・プール・キャッシュがチェックされます。
false の場合、データ・プールはプライベート・インスタンスです。共用データ・プール・インスタンスを変更すると、他のユーザーに影響を与えることがあるため、制限された環境でのみ使用することをお勧めします。
- プログラマチックにデータ・プールを編集したい場合は、org.eclipse.hyades.edit.datapool をインポートします。
- IDatapoolFactory オープン・メソッドの第 2 パラメーターは、イテレーターの型を示します。共用データ・プールの場合、DatapoolIteratorSequentialPrivate を使用します。
- testShoppingCartConstructor メソッドを変更して、shoppingCartDatapool を使用します。
public void testShoppingCartConstructor()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
// Traverse through datapool...
// Test if constructor initializes each flower record appropriately
while(!dpIterator.dpDone())
{
String Description = dpIterator.dpCurrent().getCell("Description").getStringValue();
double datapoolPrice = dpIterator.dpCurrent().getCell("Price").getDoubleValue();
// Test if the flower is accounted for in the application
Double applicationPrice;
assertNotNull(applicationPrice = (Double)cart.myFlowers.get(Description));
// Test that the application price equals the price in the datapool
assertTrue(applicationPrice.doubleValue() == datapoolPrice);
dpIterator.dpNext();
}
}
- shoppingCartTest_src.java を保管します。「ファイル」メニューから、「ファイル」>「保管」を選択します。
- データ・プールを testArtifact に追加します。
- テスト・パースペクティブを開きます。テスト・ナビゲーターで、testDeployment をダブルクリックしてそれをエディターで開きます。
- 「ペア」タブで、testAsset を選択して「開く...」をクリックします
- 「テスト資産」タブで「追加...」をクリックします。データ・プールを選択し、「OK」をクリックします。テスト資産を保管します。
- カスタム・デプロイメントを使用してテストを実行します。
- テスト・パースペクティブを開きます。テスト・ナビゲーターで、shoppingCartTest_src テスト・スイートを右クリックし、「実行」>「構成および実行...」と選択します。「構成および実行」ダイアログが表示されます。
- 「構成および実行」ダイアログの左ペインで、shoppingCartTest_src テスト・スイートを選択します。
- 「構成および実行」ダイアログの右ペインで、『始める前に』セクションで作成したデプロイメントを選択します。
- 「テスト・ログ」タブで、「デフォルトを使用」オプションをクリアし、ロケーションの datapoolExample プロジェクト・フォルダーを選択します。
- 「実行」をクリックしてテストを起動します。
- 新規の shoppingCartTest_src テスト・ログをダブルクリックすると、これがテスト・ナビゲーターに表示されます。
shoppingCartTest_src テスト・ログが表示されます。「イベント」タブを選択してテスト結果詳細を表示します。