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
知道为什么会这样吗?我该怎么办才能修复它?
为了在 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 文件。地图文件包含三个部分:
如果您检查设计器生成的代码隐藏文件,您实际上可以发现记录器生成了大量代码来查找控件并与它们交互。
对于记录器发现的每个控件,它声明了相应测试/交互对象的实例。
当声明这些对象时,记录器定义了一堆可发现/可搜索的属性。下次执行播放时,它将获取这些属性并使用它们来查找实际的控件。
此外,所有控件都有一个父控件,因此记录器强制为每个发现的控件指定一个父 UI 元素。对于 SL4 和 SL5,父级如下:
构造函数:
搜索属性:
包含两个项目的组合框,每个项目名为“列表项目”,可以通过以下显示名称发现:
“列表项目:1”和“列表项目:2”
长话短说,SL4 和 SL5 中记录器生成的实际交互对象是不同的。这意味着您不能将一个 UIMap.designer.cs 与另一个进行交换。测试框架(及其在 UIMap.designer.cs 中使用的关联交互对象)不是二进制兼容的。这就是您的播放无法进行的原因。