编码 UI 测试:创建多个单独的 UIMap 类 而不是多个部分 UIMap 类 背后的原因是什么?

Coded UI testing: What is the reasoning behind creating multiple individual UIMap classes instead of just multiple partial UIMap classes?

我正在开发一个包含 "semi-big" 应用程序 GUI 的项目。我想对大约 4-5 个单独的(复杂的)页面执行编码 UI 测试,我的印象是创建多个 UI 地图是可行的方法!资料来源:UIMap container, Using multiple UIMaps, More source 列表还可以继续......

我的 problem/thought:使用多个 UI 地图是 "nice" 因为它:

  1. 允许更分类的代码结构
  2. 让开发者之间更容易合作
  3. 使代码更容易维护。

但是为什么 没有人只是将UI地图分割成多个部分类?不还是一样的优势吗?更进一步:在部分 类 中使用 UIMap 将防止开发人员(我)增加代码的复杂性,例如 UIMap container.

这个问题并不是真正针对 CodedUI。使用部分 classes 来模拟关注点分离并不是正确的方法。

它们可能使 编写 变得更容易 class,但它们没有创建适当的关注点分离(这是 [=30= 存在背后的根本原因) ]es),因此不会使 使用 和 class 更容易,因为从外部的角度来看,class 与编写的代码之间没有任何区别在一个或多个文件中。

举个简单的例子,您将自动完成 return 一个包含所有部分文件的 class 所有成员的平面列表,没有区别。

当 class 部分是生成的代码部分是非生成的代码,或者用不同的语言编写(例如 xaml 和 C# 用于 SL/WPF 时,使用部分。不同的位可能涵盖相同行为的部分,因此(从 SoC 的角度来看)将它们分组在相同的 class 下是有意义的,但从代码管理的角度来看,这两个部分需要分开。 这就是 CodedUI 使用 partials 的原因(生成 *.Designer.cs 文件,而不生成 *.cs 文件)。

如果您觉得需要创建部分以分离关注点,那么您可能应该退后一步并使用适当的 SoC(即创建不同的 classes)。

在您公开的特定情况下,我会考虑为应用程序的不同部分创建 UI 映射 UI(无论您是将 UI 的行为分成不同的windows,或 windows 的部分,等等 - 取决于它的复杂性)。

使用多张 UI 地图而不是一张大地图有多种原因。其中一些是:

  • UI 地图很难清理。随着测试套件的发展,UI 地图得到越来越多的旧的和未使用的项目。几乎不支持安全删除不需要的部分。

  • 拥有许多 UI 地图意味着不同的测试开发人员可以同时高效工作,而不会在主 UI 地图中生成冲突项目。虽然“.uimap”文件是一个简单的文本文件,但它包含 XML。以配置管理系统常见的方式成功合并这些文件将非常困难和不可能。

  • 有许多 UI 地图,每个测试一个,意味着当不再需要测试时,可以丢弃它的 UI 地图。所有对该测试特定的支持都被干净地丢弃了。

  • 拥有许多 UI 应用程序的每个页面一个地图意味着丢弃 UI 地图并为页面创建一个新地图相对便宜。

  • 大 UI 地图消耗大量内存和 CPU 时间。有趣的是,使用大 UI Map 会使测试套件非常慢(我没有这方面的真实证据)。一个大的 UI 地图有大量的成员和嵌套的 classes。很容易想象,管理这样一个class需要的运行时间数据很大,消耗大量内存和CPU个周期。

  • 有许多 UI 地图而不是一张大地图意味着可以在不向主项目地图添加大量不必要的项目的情况下进行试验。