我正在将我的UI测试转移到CodedUI测试。现在,我遇到了以下麻烦:
在我的UnitTest中,我两次调用位于我的UIMap中的方法。该方法包含一个片段,用于检查MessageBox窗口是否已打开,并且具有一个布尔参数,用于切换是否单击消息框中的确认或取消按钮。 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();
}
}
第一次通话每次都没有任何问题。 在第二次调用期间,消息框会弹出,但测试框架无法找到它。
CodedUiTestBuilder为MessageBox分配的搜索条件是其名称(信息)和类名(#32770)。
有人对这里可能出错的地方有任何暗示吗?这是MessageBox控件中的一些辅助功能吗?
此致
的Seb
答案 0 :(得分:4)
您可以从测试方法刷新地图。所以当你第二次调用partial类中的方法时,只需要输入像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();
}
}
希望这有帮助。