如何使用C#和Visual Studio解决自动化UI测试中的计时问题?
作者:互联网
题
解决自动化UI测试中的计时问题的标准方法是什么?
具体例子
我正在使用Visual Studio 2010和Team Foundation Server 2010创建自动UI测试,并想检查我的应用程序是否真的停止运行:
[TestMethod]
public void MyTestMethod()
{
Assert.IsTrue(!IsMyAppRunning(), "App shouldn't be running, but is.");
StartMyApp();
Assert.IsTrue(IsMyAppRunning(), "App should have been started and should be running now.");
StopMyApp();
//Pause(500);
Assert.IsTrue(!IsMyAppRunning(), "App was stopped and shouldn't be running anymore.");
}
private bool IsMyAppRunning()
{
foreach (Process runningProcesse in Process.GetProcesses())
{
if (runningProcesse.ProcessName.Equals("Myapp"))
{
return true;
}
}
return false;
}
private void Pause(int pauseTimeInMilliseconds)
{
System.Threading.Thread.Sleep(pauseTimeInMilliseconds);
}
StartMyApp()和StopMyApp()已通过MS Test Manager 2010记录,并位于UIMap.uitest中.
最后一个断言失败,因为在我的应用程序仍在关闭过程中执行了该断言.如果我在StopApp()之后放了一个延迟,则测试用例通过.
以上仅是解释我的问题的示例.解决这类时序问题的标准方法是什么?一种想法是等待断言,直到我收到一些有关我的应用已停止的事件通知.
解决方法:
您可以向StopMyApp添加一些同步.如果您为应用程序附加到Process对象,则可以使用Process.WaitForExit()等待程序完成.
标签:coded-ui-tests,automated-tests,c,visual-studio 来源: https://codeday.me/bug/20191106/1999768.html