昨日のわんくま勉強会名古屋で、 VS2010 の 「コード化された UI テスト」 を紹介しました。 実際に WinForm アプリに対する操作をレコーダーで記録して、 再生とコントロールの検証をするところをご覧に入れました。 しかしそのままでは、 いちいち先に手動でアプリを起動してやる必要があります。
このとき自動生成されたテストコード (の、 一番上層部) は、 こんなふうでした。
[TestMethod]
public void CodedUITestMethod1()
{
// このテストのコードを生成するには、ショートカット メニューの [コード化された UI テストのコードの生成] をクリックし、メニュー項目の 1 つをクリックします。
this.UIMap.RecordedMethod1();
this.UIMap.AssertMethod1();
}
その次 (スライド (PDF) では 11枚目) に、 「テスト開始時に、最新ビルドの画面を自動的に表示させるには、工夫が必要」 とだけ喋って、 時間の都合でコードをお見せすることはできませんでした。
たとえばこんなふうにして、 テストコードの中でプロセスを起動/終了してやります。
[TestMethod]
public void CodedUITestMethod1()
{
System.Diagnostics.Process p = System.Diagnostics.Process.Start(@"{プロジェクトのパス}\bin\Debug\WinForm1.exe");
p.WaitForInputIdle(); //入力可能状態になるまで待機
this.UIMap.RecordedMethod1();
this.UIMap.AssertMethod1();
p.CloseMainWindow(); //メイン Window を閉じて、 アプリ終了
}
※ そのほか、 UI スレッドを起こして、 そこで直接 Form を開いてもいけるとは思いますが、 試していません。