编码的 UI 测试的最佳做法

本主题介绍在开发编码的 UI 测试时应遵循的最佳做法。

要求

  • Visual Studio 旗舰版, Visual Studio 高级专业版

最佳做法

使用以下准则来创建灵活的编码的 UI 测试。

  • 尽可能使用**“编码的 UI 测试生成器”**。

  • 不要直接修改 UIMap.designer.cs 文件。 如果执行此操作,将覆盖对该文件的更改。

  • 将测试创建为一系列录制的方法。 有关如何录制方法的更多信息,请参见创建编码的 UI 测试

  • 每个录制的方法应作用于单个页面、窗体或对话框。 为每个新页面、窗体或对话框创建新测试方法。

  • 创建方法时,请使用有意义的方法名称,而不是默认名称。 有意义的名称有助于标识方法的用途。

  • 如果可能,将每个录制的方法限制为少于 10 次操作。 这种模块化方法便于在 UI 更改时替换方法。

  • 使用**“编码的 UI 测试生成器”**创建每个断言,这会自动向 UIMap.Designer.cs 文件中添加断言方法。

  • 如果用户界面 (UI) 更改,请重新录制测试方法或断言方法,或重新录制现有测试方法中受影响的部分。

  • 为受测应用程序中的每个模块创建一个单独的 UIMap 文件。 有关更多信息,请参见使用多个 UI 映射测试大型应用程序

  • 在受测应用程序中创建 UI 控件时,请使用有意义的名称。 这比自动生成的控件名称更有意义,更易于使用。

  • 如果通过用 API 编码来创建断言,请为 UIMap.cs 文件中 UIMap 类部分中的每个断言创建一个方法。 从测试方法中调用此方法以执行断言。

  • 如果直接用 API 编码,请在代码中尽可能使用 UIMap.Designer.cs 文件中生成的类中的属性和方法。 这些类将使您的工作更简单、可靠,并帮助您提高效率。

编码的 UI 测试能够自动适应用户界面中的许多更改。 例如,在大多数情况下,如果 UI 元素更改了位置或颜色,则编码的 UI 测试仍将找到正确的元素。

在测试运行期间,测试框架使用一组搜索属性来定位 UI 控件,在 UIMap.Designer.cs 文件中由**“编码的 UI 测试生成器”**创建的定义中,会对每个控件类应用这些属性。 搜索属性包含可用于标识控件的属性名称和属性值的名称-值对,例如控件的 FriendlyNameNameControlType 属性。 如果搜索属性未更改,则编码的 UI 测试会在 UI 中成功找到控件。 如果搜索属性发生更改,编码的 UI 测试会使用一个智能匹配算法,应用试探方法在 UI 中查找控件和窗口。 当 UI 已更改时,您或许能够修改以前标识的元素的搜索属性,以确保能够找到这些元素。

如果用户界面发生更改应如何操作

在开发过程中,用户界面经常更改。 下面提供了一些可以降低这些更改的影响的方法:

  • 找到引用此控件的录制的方法,并使用**“编码的 UI 测试生成器”**重新录制此方法的操作。 可对方法使用同一名称,以覆盖现有操作。

  • 如果控件有一个不再有效的断言,则执行下列操作:

    • 删除包含断言的方法。

    • 从测试方法中移除对此方法的调用。

    • 通过将十字线按钮拖动到 UI 控件来添加新的断言,打开 UI 映射,然后添加新的断言。

有关如何录制编码的 UI 测试的更多信息,请参见 使用编码的用户界面测试来验证代码

需要先完成后台进程然后测试才能继续时应如何操作

可能必须等到进程完成,然后才能继续下一个 UI 操作。 为此,可以使用 WaitForReadyLevel 在测试继续之前等待,如以下示例所示。

// Set the playback to wait for all threads to finish
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;

// Press the submit button
this.UIMap.ClickSubmit();

// Reset the playback to wait only for the UI thread to finish
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;

请参见

参考

UIMap

Microsoft.VisualStudio.TestTools.UITesting

概念

使用编码的用户界面测试来验证代码

使用多个 UI 映射测试大型应用程序

支持编码的 UI 测试和操作录制的配置和平台

其他资源

创建编码的 UI 测试