pirkak公式サイト|株式会社 オリエンタルアーツ
HOMEpirka TOP > サンプル集
pirka サンプル集

> 戻る

JUnitでの自動テスト方法


≪サンプル説明≫  

pirkaで使用されるウインドウオブジェクトはJUnit等を使用したWEBサーバーの
存在しない環境でテストを行うことができます。
 
サンプル実行ボタンをクリックして動作する画面はJUnitでのテスト対象となる画面です。
数値と計算方法を入力し計算ボタンをクリックすると次画面に結果が表示されます。

JUnitでのテストはJUnitSample.javaをJUnitフレームワーク上で実行させてください。


≪作成時注意点≫ 

JUnit使用時の留意点を以下に記します。

 1) エントリーポイントとしてOfflineEntryPointを使用します。
  OfflineEntryPointのオブジェクトは以下のように取得します。

  【例】OfflineEntryPoint entryPoint = OfflineEntryPoint.getInstance();

 2) OfflineEntryPointのオブジェクトを取得したらセション開始メソッドを
  呼び出してください。

【例】entryPoint.startSession();

 3) テスト中にブラウザで現在のウインドウ内容を表示することもできます。
  デフォルトではWindowsXPでIE6を使用するように設定されていますが、他のOSやブラウザを
  使用するときは以下の様にブラウザ起動コマンドを設定してください。

  【例】FireFox(FireFoxでは終了時に削除ダイアログボックスを表示しない設定を行う必要があります)

  entryPoint.setDebugBrowserCommand("C:\\Program Files\\Mozilla Firefox\\firefox.exe");

 4) ウインドウオブジェクトを以下の様にnewします。

  【例】PirkaWindow nextWindow = new CtrlTestMenu();

 5) もし、この画面をブラウザで表示させたければ以下のメソッドで可能です。

  【例】entryPoint.display(nextWindow, 3); // ブラウザーで3秒表示

 6) ウインドウオブジェクト内のリンクやサブミットボタンのクリックは
   OfflineEntryPoint#actionメソッドを使用してシミュレートすることができます。

  【例】画面中name=LinkTest10のAタグがクリックされて、その戻り値が次画面で
     あるTest10クラスかJUnitのassertTrueメソッドでチェックし、確認のため
     画面を3秒ほどブラウザで表示しています。

  PirkaRespons nextRespons =
  entryPoint.action(nextWindow, "LinkTest10"); // アクション発行
  assertTrue(nextRespons instanceof Test10); // 次画面がテスト10画面かチェック
  nextWindow = (PirkaWindow) nextRespons;
  entryPoint.display(nextWindow, 3); // ブラウザーで3秒表示

 7) 画面でのデータ入力はウインドウオブジェクトよりフィールドマップを取得し
   そのフィールドマップに値を設定することで代行します。

  【例】画面からsyuuryouフィールドに100、tankaフィールドに200が入力された

  field = nextWindow.getFieldMap(); // 次画面よりフィールドを取り出し
  field.setValue("suuryou", "100"); // 値をセット(画面入力の代行)
  field.setValue("tanka", "200");

 8) 画面に表示されている内容のチェックは入力と同様にウインドウオブジェクトより
  フィールドマップを取得し、そこから値を取り出しassertEqualsメソッド等を
  使用して行ってください。

  【例】execButtonボタンクリックをシミュレーションし計算させ、その結果表示される
     kingakuフィールドの内容が20000かをチェック

  nextRespons = entryPoint.action(nextWindow, "execButton"); // アクション発行
  assertTrue(nextRespons instanceof Test10); // 画面が移動していないかのチェック
  nextWindow = (PirkaWindow) nextRespons;
  field = nextWindow.getFieldMap(); // 画面よりフィールドを取り出し
  assertEquals(field.getValueInt("kingaku"), 20000); // 表示された結果(金額)が正しいかチェック

・OfflineEntryPointでのテストはいくつかの制限事項が存在します。
 pirkaのマニュアルを参照してください。


ソースファイル
JUnitSample.java  サンプル画面のHTMLファイル

package jp.oarts.pirka.sample.instruction.is103100;

import jp.oarts.pirka.core.app.OfflineEntryPoint;
import jp.oarts.pirka.core.kernel.FieldMap;
import jp.oarts.pirka.core.win.PirkaWindow;
import junit.framework.TestCase;

public class JUnitSample extends TestCase {

public JUnitSample(String name) {
super(name);
}

public void testStart() {

// オフラインエントリーポイント取得
OfflineEntryPoint entryPoint = OfflineEntryPoint.getInstance();

// セッション開始
entryPoint.startSession();

// IEが立ち上がらない時は手動でIEnoパスを設定
// entryPoint.setDebugBrowserCommand("C:\\Program Files\\Internet Explorer\\iexplore.exe");

// FireFoxを使用例(FireFoxを使用するときは終了時に削除ダイアログボックスを表示しないように設定すること)
// entryPoint.setDebugBrowserCommand("C:\\Program Files\\Mozilla Firefox\\firefox.exe");

// 計算式入力画面を作成
PirkaWindow window = new JUnitWindow1Sample();

// 確認のためブラウザーで3秒表示
entryPoint.display(window, 3);

// 計算ボタンクリックし次画面のウインドウオブジェクトを取得
window = (PirkaWindow) entryPoint.action(window, "execCalc");

// 入力エラーが発生するため画面が遷移しないことを確認
assertTrue(window instanceof JUnitWindow1Sample);

// 確認のためブラウザーで3秒表示
entryPoint.display(window, 3);

// 画面よりフィールドを取り出し値を設定(画面入力の代行)
FieldMap field = window.getFieldMap();
field.setValue("value1", 123);
field.setValue("value2", 10000);
field.setValue("calcType", "*");

// 確認のためブラウザーで3秒表示
entryPoint.display(window, 3);

// 計算ボタンクリックし次画面のウインドウオブジェクトを取得
window = (PirkaWindow) entryPoint.action(window, "execCalc");

// 計算結果表示画面に遷移していることを確認
assertTrue(window instanceof JUnitWindow2Sample);

// 表示されている値(計算結果)が正しいかを確認
field = window.getFieldMap();
assertEquals(1230000L, field.getValueLong("result"));

// 確認のためブラウザーで5秒表示
entryPoint.display(window, 5);
}
}



JUnitWindow1Sample.html  テスト対象画面(計算式入力画面)のHTMLファイル

<html>
<head>
<title>pirka逆引きサンプル JUnitでの自動テスト方 計算式入力画面</title>
</head>
<body>
<center>
<span style="color: #8080ff">pirka逆引きサンプル JUnitでの自動テスト方 計算式入力画面</span><br>
<hr>
<form name="formItem" method="post">
<table>
<tr><td>
<input type="text" name="value1" maxlength="8">

<select name="calcType">
<option value="" selected></option>
<option value="+">+</option>
<option value="-">?</option>
<option value="*">×</option>
<option value="/">÷</option>
</select>

<input type="text" name="value2" maxlength="8">
<input type="submit" name="execCalc" value="計算">
</td></tr>
<tr><td style="color: #ff0000">
<pre><span name="errorMessage"></span></pre>
</td></tr>
</table>
<br><br>
</form>
<hr>
<a name="returnWindow" href="">戻る</a>
</center>
</body>
</html>

JUnitWindow1Sample.java  テスト対象画面(計算式入力画面)のJavaソースファイル

package jp.oarts.pirka.sample.instruction.is103100;

import jp.oarts.pirka.core.kernel.FieldMap;
import jp.oarts.pirka.core.util.check.PirkaChecker;
import jp.oarts.pirka.core.win.PirkaWindow;

/**
* pirka逆引きサンプル JUnitでの自動テスト方 計算式入力画面
*/
public class JUnitWindow1Sample extends PirkaWindow {

/**
* コンストラクタ
*/
public JUnitWindow1Sample() {
FieldMap field = getFieldMap();
field.setOfficialFieldName("value1", "左の数値");
field.setOfficialFieldName("value2", "右の数値");
field.setOfficialFieldName("calcType", "計算方法");

addCheck("value1", PirkaChecker.required, PirkaChecker.intValue);
addCheck("value2", PirkaChecker.required, PirkaChecker.intValue);
addCheck("calcType", PirkaChecker.required);
addErrorCheckReturner();
}

/**
* 計算ボタン処理
*/
public PirkaWindow execCalc() {
FieldMap field = getFieldMap();
int value1 = field.getValueInt("value1");
int value2 = field.getValueInt("value2");
String calcType = field.getValueString("calcType");

long result = 0;
if ("+".equals(calcType)) {
result = (long)value1 + value2;
} else if ("-".equals(calcType)) {
result = (long)value1 - value2;
} else if ("*".equals(calcType)) {
result = (long)value1 * value2;
} else if ("/".equals(calcType)) {
if (value2 == 0) {
addError("ゼロで割ることはできません");
field.setError("calcType", true);
field.setError("value2", true);
return this;
}
result = (long)value1 / value2;
} else {
throw new RuntimeException("予期せぬエラーが発生しました 未知の計算方法");
}

return new JUnitWindow2Sample(result);
}

/**
* 戻るリンク処理
*
* @return
*/
public PirkaWindow returnWindow() {
return null;
}
}

JUnitWindow2Sample.html  テスト対象画面(計算結果表示画面)のHTMLファイル

<html>
<head>
<title>pirka逆引きサンプル JUnitでの自動テスト方 計算結果表示画面</title>
</head>
<body>
<center>
<span style="color: #8080ff">pirka逆引きサンプル JUnitでの自動テスト方 計算結果表示画面</span><br>
<hr><br><br>
答え <span name="result"></span><br><br>
<hr>
<a name="returnWindow" href="">戻る</a>
</center>
</body>
</html>

JUnitWindow2Sample.java  テスト対象画面(計算結果表示画面Javaソースファイル

package jp.oarts.pirka.sample.instruction.is103100;

import jp.oarts.pirka.core.kernel.FieldMap;
import jp.oarts.pirka.core.win.PirkaWindow;

/**
* pirka逆引きサンプル JUnitでの自動テスト方 計算結果表示画面
*/
public class JUnitWindow2Sample extends PirkaWindow {

/**
* コンストラクタ
*/
public JUnitWindow2Sample(long result) {
FieldMap field = getFieldMap();
field.setValue("result", result);
}

/**
* 戻るリンク処理
*
* @return
*/
public PirkaWindow returnWindow() {
return null;
}
}

ページのTOPへ このページの先頭へ
oriental arts pirka