C# 编码的UI测试和MessageBox出现问题-搜索条件

C# 编码的UI测试和MessageBox出现问题-搜索条件,c#,.net,winforms,coded-ui-tests,C#,.net,Winforms,Coded Ui Tests,我目前正在将UI测试转移到CodedUI测试。现在,我面临以下问题: 在我的单元测试中,我调用位于UIMap中的方法两次。该方法包含一个片段,用于检查MessageBox窗口是否打开,并具有一个布尔参数,用于切换单击MessageBox中的确认按钮还是取消按钮。Messagebox从不更改(表示其标题、文本和按钮) 第一次呼叫每次都能正常工作。 在第二次调用期间,Messagebox弹出,但测试框架无法找到它 CodedUiTestBuilder分配给MessageBox的搜索条件是其名称(In

我目前正在将UI测试转移到CodedUI测试。现在,我面临以下问题:

在我的单元测试中,我调用位于UIMap中的方法两次。该方法包含一个片段,用于检查MessageBox窗口是否打开,并具有一个布尔参数,用于切换单击MessageBox中的确认按钮还是取消按钮。Messagebox从不更改(表示其标题、文本和按钮)

第一次呼叫每次都能正常工作。 在第二次调用期间,Messagebox弹出,但测试框架无法找到它

CodedUiTestBuilder分配给MessageBox的搜索条件是其名称(Info)和类名(#32770)

有人对这里可能出现的问题有什么提示吗?这是MessageBox控件中缺少的一些可访问性吗

问候,


Seb

您可以从测试方法中刷新地图。因此,当您第二次在分部类中调用该方法时,只需放入类似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();
    }
}
希望这有帮助

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();
    }
}