3

在我使用 Coded UI Tests 测试的程序中,我有一个只打开一秒钟左右的窗口,我想验证这个窗口是否正在打开。

有没有办法冻结程序,或者让它运行缓慢,以便测试能够找到那个窗口?

4

5 回答 5

3

正如我在评论中已经提到的那样,您可以通过CodedUi Test捕获窗口来做很多事情(也许什么也做不了),因为此功能内置于应用程序中。

我的建议是使这个属性可配置。被测应用程序中的某些属性需要可配置,以便对其进行测试。考虑以下要求:

  • 该服务每月重新启动。
  • 用户在一年不活动后被删除。

你将如何测试它们?你会等一个月还是一年?这些参数必须可供 Qa 团队使用,否则无法测试。我知道使用这种方法,您必须更改应用程序的代码并构建,但我认为这是解决它的唯一方法。

于 2012-06-22T07:40:46.717 回答
1

添加一个 Thread.Sleep(100); 怎么样?

http://msdn.microsoft.com/en-us/library/d00bd51t

于 2012-06-20T20:02:57.643 回答
0

据我了解,最好的方法是将您的任务分解得尽可能小。因此,对于我所做的 UI 测试,它在我的工具栏上打开一个快捷方式,在其中的弹出窗口上单击登录,然后单击应用程序中的一个选项卡,代码如下所示:

namespace CodedUITestProject1
{
/// <summary>
/// Summary description for CodedUITest1
/// </summary>
[CodedUITest]
public class CodedUITest1
{
    public CodedUITest1()
    {
    }

    [TestMethod]
    public void CodedUITestMethod1()
    {
        // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
        // For more information on generated code, see http://go.microsoft.com/fwlink/?LinkId=179463
        this.UIMap.OpenWindow();
        this.UIMap.ClickLogin();
        this.UIMap.ClickDevelopment();
    }
//snip
}

所以然后在 ClickDevelopment() 方法中,我知道程序应该是可见的,所以我可以抛出一个 Thread.Sleep() 使其可见一段时间,而不是直接进入方法操作。

public void ClickDevelopment()
    {
        Thread.Sleep(10000);
        #region Variable Declarations
        WinClient uIDevelopmentClient = this.UIQualityTrack30Window.UIItemWindow.UIQualityTrack30Client.UIDevelopmentClient;
        #endregion

        // Click 'Development' client
        Mouse.Click(uIDevelopmentClient, new Point(39, 52));
    }
于 2012-06-20T21:15:24.223 回答
0

使用 Playback.Wait(2000) 而不是 Thread.Sleep(2000);

于 2012-10-06T10:06:09.133 回答
0

最好的方法是添加轮询机制。一旦您执行将打开窗口的操作,请调用一个函数,该函数将持续检查窗口是否出现,例如 1 分钟左右。

确保在执行操作后立即调用此函数。因此,即使窗口停留 500 毫秒,信息也会被捕获。

我们在项目中也做过类似的事情。

于 2013-12-07T12:30:02.780 回答