繁体   English   中英

如何使用C#和Visual Studio解决自动UI测试中的计时问题?

[英]How to solve timing problems in automated UI tests with C# and Visual Studio?

在自动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()等待程序完成。

看起来您正在尝试测试异步接口。 这在自动化测试中效果不佳。 你应该把它分成两个测试。 每个测试都应处理界面的一侧,而另一侧则被模拟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM