3

現在、UI テストを CodedUI テストに移行しています。現在、次のトラブルに直面しています。

私の UnitTest では、UIMap にあるメソッドを 2 回呼び出します。このメソッドには、メッセージ ボックス ウィンドウが開いているかどうかを確認するフラグメントが含まれており、メッセージ ボックスの確認ボタンまたはキャンセル ボタンをクリックするかどうかを切り替えるブール型パラメーターがあります。メッセージボックスは変更されません (タイトル、テキスト、ボタンを意味します)。

public void MyUiMethod(bool p)
{
    //...variable initialization...
    ApplicationUnderTest app = ApplicationUnderTest.Launch(@"some.exe");
    try
    {
        //... get to the point that triggers the MB to show...
        Assert.AreEqual(true, uImessageBoxWindow.Exists);
        if (p)
            Mouse.Click(uIConfirmButton, new Point(39, 16));
        else
            Mouse.Click(uICancelButton, new Point(49, 8));
    }
    finally
    {
        app.Close();
    }
}

最初の呼び出しは毎回問題なく機能します。2 番目の呼び出し中に、メッセージ ボックスがポップアップしますが、テスト フレームワークで見つけることができません。

CodedUiTestBuilder が MessageBox に割り当てる検索基準は、名前 (情報) とクラス名 (#32770) です。

ここで何がうまくいかない可能性があるかについてのヒントはありますか? これは、MessageBox コントロールのアクセシビリティの欠如ですか?

よろしく、

セブ

4

1 に答える 1

4

テスト メソッドからマップを更新できます。したがって、部分クラスでメソッドを 2 回目に呼び出すときは、UIMap MapName = new UIMap(); のようなものを入れてください。次に、これによりマップが更新され、更新の問題なしでウィンドウを再度呼び出すことができます。

public void MyUiMethod(bool p)
{
    UIMap MapName = new UIMap();

    //...variable initialization...
    ApplicationUnderTest app = ApplicationUnderTest.Launch(@"some.exe");
    try
    {
        //... get to the point that triggers the MB to show...
        Assert.AreEqual(true, MapName.uImessageBoxWindow.Exists);

        UIMap MapName = new UIMap();
        if (p)
            Mouse.Click(MapName.uIConfirmButton, new Point(39, 16));
        else
            Mouse.Click(MapName.uICancelButton, new Point(49, 8));
    }
    finally
    {
        app.Close();
    }
}

お役に立てれば。

于 2011-07-01T10:47:04.343 に答える