2014年10月9日木曜日

UI オートメーションで自動テスト その3

UI オートメーションの続きです。

前回は、テキストボックスに文字列を自動入力するところまで実装しました。
実行するとアプリケーションが起動したままでした。
今回は、起動したアプリケーションを終了する処理を実装したいと思います。

コントロールパターンの取得

前回は、ValuePattern を取得しました。今回は、WindowPattern です。

public static class AutomationHelper
{
    public static WindowPattern GetWindowPattern(AutomationElement element)
    {
        if (element != null)
        {
            object pattern = null;
            if (element.TryGetCurrentPattern(WindowPattern.Pattern, out pattern))
            {
                return pattern as WindowPattern;
            }
        }

        return null;
    }
}

アプリケーションの終了

取得した WindowPattern でアプリケーションの終了を行います。
Setup 属性のメソッドでアプリケーションを起動しているので、TearDown 属性のメソッドで終了します。

[TestFixture]
public class MainWindowTest
{
    [TearDown]
    public void TearDown()
    {
        if (this.targetElement != null)
        {
            var windowPattern = AutomationHelper.GetWindowPattern(this.targetElement);
            if (windowPattern != null)
            {
                windowPattern.Close();
            }
        }
    }
}

ひと通り実装が終わったので、NUnit で実行します。
アプリケーションが実行して、終了しました。
一瞬の出来事で文字列が自動入力されたかも確認できません。
Thread.Sleep メソッドを使って処理を中断すると目視でも確認できるようになります。


頑張りすぎず脱力系でいこうと思います。
以上。

関連記事

0 件のコメント:

コメントを投稿