More Related Content Similar to Friendlyを使ったwindowsアプリテスト自動化
Similar to Friendlyを使ったwindowsアプリテスト自動化 (20) More from Tatsuya Ishikawa
More from Tatsuya Ishikawa (20) Friendlyを使ったwindowsアプリテスト自動化41. アプリケーションドライバ
GUIマップ
public class EntryForm
{
public WindowControl Form { get; private set; }
public FormsTextBox TextBoxName { get; private set; }
public FormsNumericUpDown NumericUpDownAge { get; private set; }
public FormsComboBox ComboBoxSkill { get; private set; }
public FormsButton ButtonOK { get; private set; }
public EntryForm(WindowControl entryForm)
{
//内部仕様の情報を使ってマッピング ここで隠蔽され、テストシナリオには表れない。
Form = entryForm;
dynamic entryFormCore = entryForm.AppVar.Dynamic();
TextBoxName = new FormsTextBox(entryForm.App, entryFormCore._textBoxName);
NumericUpDownAge = new FormsNumericUpDown
(entryForm.App, entryFormCore._numericUpDownAge);
ComboBoxSkill = new FormsComboBox
(entryForm.App, entryFormCore._comboBoxSkill);
ButtonOK = new FormsButton(entryForm.App, entryFormCore._buttonOK);
}
}
GUIを外部仕様としてとらえる。
GUIを特定する変数名称は内部仕様なので、ここで隠蔽する。
これを公開
注)継続的デリバーを素直に読むと、ウィンドウの種類を外に出すべきではないとも読み取れます。
しかし、GUIの種別も外部仕様と考えることができるので、私は、プロジェクトによっては、
これも許容範囲と考えています。
42. アプリケーションドライバ
ドメインの言葉にしたメソッド、プロパティー
public class Main
{
MainForm _form;
public Main(WindowControl form)
{
//マッピング処理等・・・
}
public void Entry(string name, int age, EmployeeManagement.Skill skill)
{
//ボタンクリック
Async asyncEntry = new Async();
_form.ButtonEntry.EmulateClick(asyncEntry);
//次の画面処理
EntryForm entryForm = new EntryForm(_form.Form.WaitForNextModal());
entryForm.TextBoxName.EmulateChangeText(name);
entryForm.NumericUpDownAge.EmulateChangeValue(age);
entryForm.ComboBoxSkill.EmulateChangeSelect((int)skill);
entryForm.ButtonOK.EmulateClick();
}
}
GUI情報隠蔽
公開
GUI操作ではなく、
登録というフィーチャをテストしたい。
メリット
・シナリオはさらにシンプルに。
・GUIが変わっても、メンテはここだ
け。
デメリット
・GUIの詳細のテストとは合わない。