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

本文关键字:UIMap 个部 是什么 单独 测试 UI 编码 创建 | 更新日期: 2023-09-27 18:07:44

我正在做一个项目,其中包括一个"半大"的应用程序GUI。我想在大约4-5个单独(复杂)的页面上执行编码UI测试,并且我已经得到了创建多个UI的印象。来源:UIMap容器,使用多个UIMap,更多的来源和列表可以继续…

我的问题/想法:使用多个UIMaps是"好"的,因为它:

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

但是为什么没有人仅仅把UIMap分割成多个部分类呢?难道它不会有同样的优势吗?更进一步:在部分类中使用UIMap将防止开发人员(我)增加代码的复杂性,如UIMap容器。

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

这个问题并不是CodedUI所特有的。使用分部类来模拟关注点分离并不是正确的方法。

它们可能使编写类更容易,但它们没有创建适当的关注点分离(这是类存在背后的潜在原因),因此也不能使使用类更容易,因为从外部的角度来看,在一个或几个文件中编写代码的类之间根本没有区别。

举一个简单的例子,您将让自动完成在所有部分文件中不加区分地返回类的所有成员的平面列表。

当一个类部分是生成的代码,部分是非生成的代码,或者用不同的语言(例如,用于SL/WPF的xaml和c#)编写时,使用

partial。不同的位可能覆盖相同行为的部分,因此(从SoC的角度来看)将它们分组在同一个类下是有意义的,但从代码管理的角度来看,这两个部分需要分开。这就是为什么CodedUI使用partial(生成*. designer .cs文件,而不生成*.cs文件)。

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

在你正在暴露的特定情况下,我会考虑为你的应用程序UI的不同部分创建UIMaps(无论你是将你的UI的行为分离到不同的窗口,或窗口的部分,等等-取决于它的复杂性)。

使用多个UI Maps而不是一个大地图有几个原因。其中一些是:

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

  • 拥有许多UI Map意味着不同的测试开发人员可以同时生产,而不会在主UI Map中生成冲突项。而一个"。uimap"文件是一个简单的文本文件,它包含XML。以配置管理系统中常见的方式成功合并这些文件是非常困难的,甚至是不可能的。

  • 每个测试有一个UI Map,意味着当一个测试不再需要它的UI Map时,它可以被扔掉。

  • 拥有多个UI Map(每个页面一个)意味着扔掉UI Map并为每个页面创建一个新的UI Map相对便宜。

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

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