编程语言
首页 > 编程语言> > 如何使用C#和Visual Studio解决自动化UI测试中的计时问题?

如何使用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