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

时间:2013-04-03 13:13:56

标签: c# silverlight silverlight-5.0 coded-ui-tests

我正在尝试在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.

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

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

知道为什么会这样吗?我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:4)

为了在Silverlight 5中进行编码UI测试,您需要使用从这里更新Coded UI自动化助手:Visual Studio Gallery: UI Test Plugin for Silverlight VS2010附带的旧版本可以工作,但仅适用于SL4和下面的版本。

SL5的实现略有不同,它打破了Coded UI测试,因此提示开发人员切换到VS2012和新的UI Automation插件(正如您所发现的那样)。

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

据我所知,你的编码UI测试在VS2010中破解但在VS2012中工作的原因是因为测试记录器生成的SL5和SL4 UIMap.designer.cs文件彼此不兼容

SL4录制使用SL4自动化助手生成的版本不适用于版本的AutiomationHelper SL5。但是,如果这些录音是由VS2012生成的,SL5 Autiomation Helper将与SL4录音配合使用。

详细说明:当您使用录像机时,它会创建一个UIMap文件。地图文件有三个部分:

  1. 所有记录方法的XML列表
  2. Designer生成的代码在部分类后面。
  3. 用户部分类。
  4. 如果您检查设计器生成的代码隐藏文件,您实际上可以发现记录器生成了大量代码来查找控件并与它们进行交互。

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

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

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

    • 浏览器窗口
    • HTML页面
    • Div(持有silverlight运行时)
    • SL对象(SL运行时插件)
    • 主要SL UI元素(通常是狂热的指示符)
    • 导航框架
    • 内部页面
    • 控制

    构造

    1. 家长控制/互动对象
    2. 搜索属性:

      1. 页面标题:浏览器窗口标题呈现的总字符串。
      2. 实例编号:(从列表1开始......这很奇怪)
      3. 控制ID :(由名称或x:名称xaml属性定义)
      4. 显示名称:对于组合框/列表元素,这是有效的 通过组合在组合框/列表元素项中呈现的任何内容以及该项的实例编号:例如:
      5. 可以通过以下显示名称发现包含两个项目的组合框,每个项目名为“列表项”:

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

        1. 搜索属性的任何组合和排列(您可以查找它们)。
        2. 长话短说,录像机生成的实际交互对象在SL4和SL5中是不同的。这意味着您不能使用一个UIMap.designer.cs并将其与另一个交换。测试框架(以及它在UIMap.designer.cs中使用的相关交互对象)不是二进制兼容的。这就是你的播放无法正常工作的原因。