编码的UI测试未找到SilverlightUIAutomationHelper程序集

tnw*_*tnw 8 c# silverlight coded-ui-tests silverlight-5.0

我正在尝试在SharePoint 2010网站上使用Visual Studio 2010进行一些编码的UI测试.SharePoint中的特定文件在单独的窗口中启动我的Silverlight应用程序.我在所有运行它的Silverlight项目中添加了SilerlightUIAutomationHelper程序集作为参考.这应该允许我在其中记录操作,但当我尝试在Silverlight应用程序内部录制时会弹出一条错误消息:

No Silverlight controls were detected. Verify that the application under test
is built using Silverlight assemblies with a version of 4.0 or greater and that
a reference to the Microsoft.VisualStudio.TestTools.Extension.SilverlightUIAutomationHelper.dll
assembly has been added to the project.
Run Code Online (Sandbox Code Playgroud)

我正在运行Silverlight 5.0,所以这不是问题.我还验证了SilverlightUIAutomationHelper dll已经进入了xap包.

我已经能够使用此扩展在SharePoint 2013/Visual Studio 2012中成功记录这些操作:http://visualstudiogallery.msdn.microsoft.com/28312a61-9451-451a-990c-c9929b751eb4

知道为什么会这样吗?我该怎么办才能修复它?

ble*_*ter 4

为了在 Silverlight 5 中进行编码 UI 测试,您需要从此处更新编码 UI 自动化帮助程序:Visual Studio Gallery:Silverlight 的 UI 测试插件VS2010 附带的旧插件可以工作,但仅适用于 SL4 及以下版本。

SL5 的实现有点不同,它破坏了编码的 UI 测试,因此促使开发人员切换到 VS2012 和新的 UI 自动化插件(正如您所发现的)。

安装 UITestPluginForSilverlight.msi 可执行文件后,您需要在项目的 Silverlight 部分(您已经拥有)中引用这些程序集。

据我记得,您的编码 UI 测试在 VS2010 中崩溃但在 VS2012 中工作的原因是因为测试记录器生成的 SL5 和 SL4 UIMap.designer.cs 文件彼此不太兼容。

使用 SL4 自动化助手生成的 SL4 录音无法与 SL5 版本的 AutiomationHelper 配合使用。但是,如果 SL4 录音是由 VS2012 生成的,则 SL5 Autoomation Helper 将可以使用这些录音。

详细说明一下:当您使用记录器时,它会创建一个 UIMap 文件。地图文件包含三个部分:

  1. 所有记录方法的 XML 列表
  2. 设计者在部分类后面生成代码。
  3. 用户部分类。

如果您检查设计器生成的代码隐藏文件,您实际上可以发现记录器生成了大量代码来查找控件并与它们交互。

对于记录器发现的每个控件,它声明了相应测试/交互对象的实例。

当声明这些对象时,记录器定义了一堆可发现/可搜索的属性。下次执行播放时,它将获取这些属性并使用它们来查找实际的控件。

此外,所有控件都有一个父控件,因此记录器强制为每个发现的控件指定一个父 UI 元素。对于 SL4 和 SL5,父级如下:

  • 浏览器窗口
  • HTML 页面
  • Div(保存 silverlight 运行时)
  • SL 对象(SL 运行时插件)
  • 主要 SL UI 元素(通常是弯曲的忙碌指示器)
  • 导航框架
  • 内部页面
  • 控制

构造函数:

  1. 家长控制/交互对象

搜索属性:

  1. 页面标题:浏览器窗口标题呈现的总字符串。
  2. 实例编号:(列表从 1 开始......这很奇怪)
  3. 控件 ID:(由 Name 或 x:Name xaml 属性定义)
  4. 显示名称:这对于组合框/列表元素来说是不确定的,因为它的工作原理是将组合框/列表元素项中呈现的任何内容与该项目的实例编号相结合:例如:

包含两个项目的组合框,每个项目名为“列表项目”,可以通过以下显示名称发现:

“列表项目:1”和“列表项目:2”

  1. 搜索属性的任意组合和排列(您可以查找它们)。

长话短说,SL4 和 SL5 中记录器生成的实际交互对象是不同的。这意味着您不能将一个 UIMap.designer.cs 与另一个进行交换。测试框架(及其在 UIMap.designer.cs 中使用的关联交互对象)不是二进制兼容的。这就是您的播放无法进行的原因。