我有一个使用 VS2010 为在机器 A 上运行的 TFS2010 构建的编码 UI 测试。我在机器 A 上安装了一个测试代理,测试可以成功运行。我的 testsettings 文件>Roles 设置为 RemoteExecution,因为这些 codedUI 测试始终需要在机器 A 上运行。该文件始终显示我指定的“已连接到控制器”。
我将代码检查到构建服务器(机器 B)中,但它失败了。在 codedUI 程序集上将 copy local 设置为 false 时,构建失败并出现错误:
“无法运行:无法初始化单元测试扩展‘urn:CodedUITest’:未为以下属性注册单元测试扩展:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute。”
在机器 B 上的应用程序日志中,我得到以下信息:
(QTAgent32.exe,PID 5308,线程 8)GetCollectorType:无法获取收集器 'Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo.SystemInfoDataCollector、Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo、Version=10.0.0.0、Culture= 的类型中性,PublicKeyToken=b03f5f7f11d50a3a':System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo,Version=10.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'或其依赖项之一。该系统找不到指定的文件。文件名:“Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo,版本=10.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”
在 System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔 throwOnError,布尔 ignoreCase,布尔反射仅,StackCrawlMarkHandle stackMark,IntPtr pPrivHostBinder,布尔 loadTypeFromPartialName,ObjectHandleOnStack 类型)在 System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔 throwOnError,布尔 ignoreCase,布尔反射, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) 在 System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectOnly, StackCrawlMark& stackMark) 在 System.Type.GetType(String typeName, Boolean throwOnError) 在 Microsoft.VisualStudio.TestTools .DataCollection.ExecutionPluginManager.GetCollectorType(String collectorTypeName, Exception& loadException)警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。
在管理控制台中,我得到了这个:
读取 sqm 注册表项时遇到以下错误:TF255003:找不到以下功能的安装路径:ApplicationTier。未安装该功能,或者您必须使用不同的安装路径。
在编码的 UI 程序集上将本地复制设置为 true,我在 VS 的构建资源管理器中没有收到任何错误,但构建失败并显示 0/0 测试运行。在机器 B 上的应用程序日志中,我得到:
找不到来自源 VSTTExecution 的事件 ID 0 的描述。引发此事件的组件未安装在本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复组件。
如果事件起源于另一台计算机,则显示信息必须与事件一起保存。
活动中包含以下信息:
(MSTest.exe,PID 5544,线程 1)枚举程序集时抛出异常:Microsoft.VisualStudio.TestTools.Exceptions.EqtDataException:无法加载测试容器 'C:\Builds\1\Project\Binaries\Microsoft.VisualStudio.QualityTools .CodedUITestFramework.dll' 或其依赖项之一。错误详细信息:System.IO.FileNotFoundException:无法加载文件或程序集 “Microsoft.VisualStudio.QualityTools.Vsip,版本=10.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。
在 Microsoft.VisualStudio.TestTools.TestTypes.Unit.AssemblyEnumerator.EnumerateAssembly(IWarningHandler 警告处理程序,字符串位置,ProjectData projectData , ObjectHandle assemblyResolverWrapper) 在 Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAttributeEnumerator.Read(ITestTypeExtensionClientSidesProvider 提供程序, IWarningHandler warningHandler, String assemblyFileName, ProjectData projectData, TestRunConfiguration testRunConfiguration)
机器 B 确实安装了 VS2010 express。
我还需要做什么才能在机器 B(构建机器)上构建此构建,但在机器 A(使用测试代理)上运行测试?我还能做些什么来诊断这个?
更新:我尝试手动将 qualitytools.vsip dll 复制到项目中,并以复制本地设置为 true 的方式引用它,但现在我又回到了
“无法初始化单元测试扩展‘urn:CodedUITest’:未为以下属性注册单元测试扩展:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute。”