我目前正在将我的 UI 测试转移到 CodedUI 测试。现在,我面临以下问题:
在我的单元测试中,我调用了位于 UIMap 中的方法两次。该方法包含一个片段,用于检查 MessageBox 窗口是否打开,并具有一个 bool 参数,用于切换是单击消息框中的确认按钮还是取消按钮。 Messagebox 永远不会改变(即它的标题、文本、按钮)。
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();
}
}
第一次调用每次都没有任何问题。 第二次调用时弹出Messagebox,但测试框架无法定位。
CodedUiTestBuilder 分配给 MessageBox 的搜索条件是它的名称 (Info) 和类名 (#32770)。
有没有人对这里可能出现的问题有任何提示? MessageBox 控件是否缺少某些辅助功能?
问候,
塞布
最佳答案
您可以通过测试方法刷新 map 。因此,当您第二次调用分部类中的方法时,只需输入类似 UIMap MapName = new UIMap(); 的内容即可。然后这将刷新 map ,您可以再次调用您的窗口而不会出现刷新问题。
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();
}
}
希望这对您有所帮助。
关于c# - 编码的 UI 测试和 MessageBox 出现问题 - 搜索条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6174467/