Visual studio 2015 TFS2015测试代理浏览器。启动生成。NullReferenceException:对象引用未设置为对象的实例
我们从运行在TFS2015代理下的codedUI中的Browser.Launch方法中获取NullReference异常。奇怪的是,IE浏览器(版本:11.0.9600.18376)加载到测试代理上,导航到正确的web应用程序,然后立即关闭 我们已经设置了一个内部部署的TFS 2015 update 3环境,其中包含一个构建服务器和一台单独的测试代理机器。codedUI项目已从Visual Studio 2013升级到Visual Studio 2015。我们将Microsoft.VisualStudio.QualityTools.CodedUITestFramework、Microsoft.VisualStudio.QualityTools.UITest.Common、Microsoft.VisualStudio.TestTools.UITest.Extension和Microsoft.VisualStudio.TestTools.UITesting的项目引用更改为使用程序文件(x86)中的程序集\Microsoft Visual Studio 14.0\Common7\IDE\PublicAssembly\ 我们使用交互式流程的代理配置和运行功能测试构建步骤为codedUI创建TFS2015构建、部署和测试解决方案 我们的codedUI遵循一种简单的模式,通过web应用程序驱动浏览器。要启动的代码是Visual studio 2015 TFS2015测试代理浏览器。启动生成。NullReferenceException:对象引用未设置为对象的实例,visual-studio-2015,coded-ui-tests,tfs-2015,Visual Studio 2015,Coded Ui Tests,Tfs 2015,我们从运行在TFS2015代理下的codedUI中的Browser.Launch方法中获取NullReference异常。奇怪的是,IE浏览器(版本:11.0.9600.18376)加载到测试代理上,导航到正确的web应用程序,然后立即关闭 我们已经设置了一个内部部署的TFS 2015 update 3环境,其中包含一个构建服务器和一台单独的测试代理机器。codedUI项目已从Visual Studio 2013升级到Visual Studio 2015。我们将Microsoft.VisualS
BrowserWindow.CurrentBrowser = "ie";
BrowserWindow browserWindow = BrowserWindow.Launch(new System.Uri("https://app.web.com"));
这是对BrowserWindow.Launch方法的调用,返回时出现nullreference异常。以下是堆栈跟踪:
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetPropertyValuePrivate(String propertyName)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetPropertyPrivate(String propertyName)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetPropertyOfType[T](String propertyName)
at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.get_WindowHandle()
at Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow.SwitchToWindow(BrowserWindow browserWindow)
at Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow.LaunchPrivate(Uri uri)
at Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow.<>c__DisplayClass2_0.<Launch>b__0()
at Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod[T](Func`1 function, UITestControl control, Boolean firePlaybackErrorEvent, Boolean logAsAction)
at Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow.Launch(Uri uri)
at DPOCommon.Case.launchBrowser(String browser, String URL) in D:\agent\agent\_work\1\s\DPORegression\DPOCommon\Case.cs:line 136
新增信息:
我们没有使用旧的XAML构建。我们正在使用新的基于web的构建定义。这些步骤包括Nuget安装程序、Visual Studio生成、Windows计算机文件复制、Visual Studio测试代理部署和运行功能测试。每个步骤都在工作,除了运行功能测试步骤执行codedUI测试,在测试代理计算机上打开IE浏览器,然后获取此错误。随后,浏览器关闭,并对测试套件中的所有剩余测试重复相同的顺序。对于运行功能测试,我们使用以下执行选项:TestSelection=testplan,其中选择了测试计划和测试套件。我们的测试配置设置为windows 7和IE。我们还将运行设置文件指向其在源代码管理中的位置。代码覆盖率被禁用。在测试设置配置中,我们只启用了屏幕和视频录制。这两种方法似乎都能起作用,因为我们可以通过屏幕和视频记录IE的短暂加载看到失败的测试结果
此外,我们还尝试通过手动将codedUI项目和源代码复制到测试代理,然后直接在测试代理计算机上安装Visual Studio 2015来诊断此问题。当我们在测试代理计算机上加载Visual Studio 2015中的codedUI项目并运行codedUI测试时,它会成功运行。但是,当运行“运行功能测试”自动构建步骤时,相同的codedUI仍然不能处理“空对象引用”问题。
2016年11月8日更新:添加我们的test.testsettings文件。在进一步诊断以响应注释问题后,我们发现,当我们从“运行功能测试”步骤中删除test.testsettings文件时,codeUI测试在加载浏览器后运行,不会出现对象空引用错误。不幸的是,我们需要使用legacy test.testsettings文件,因为我们需要包括屏幕记录数据采集器,以便失败的测试显示导致错误的web应用程序序列,以便开发团队进行诊断
<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="TestSettings" id="caa2702e-3ce5-4b20-be15-5e85ef063642" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Description>These are default test settings for a local test run.</Description>
<Deployment enabled="false" />
<Execution>
<TestTypeSpecific>
<UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
<AssemblyResolution>
<TestDirectory useLoadContext="true" />
</AssemblyResolution>
</UnitTestRunConfig>
<WebTestRunConfiguration testTypeId="4e7599fa-5ecb-43e9-a887-cd63cf72d207">
<Browser name="Internet Explorer 9.0" MaxConnections="6">
<Headers>
<Header name="User-Agent" value="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" />
<Header name="Accept" value="*/*" />
<Header name="Accept-Language" value="{{$IEAcceptLanguage}}" />
<Header name="Accept-Encoding" value="GZIP" />
</Headers>
</Browser>
</WebTestRunConfiguration>
</TestTypeSpecific>
<AgentRule name="LocalMachineDefaultRole">
<DataCollectors>
<DataCollector uri="datacollector://microsoft/VideoRecorder/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder.VideoRecorderDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Screen and Voice Recorder">
</DataCollector>
</DataCollectors>
</AgentRule>
</Execution>
<Properties />
</TestSettings>
这些是本地测试运行的默认测试设置。
通过@s09诊断帮助,我们找到了此问题的解决方案。当我将环境配置为在同一台机器上运行构建和代码DUI(Windows Server 2012)时,我能够通过vNext构建成功运行构建和“运行功能测试”。为此,我必须安装Microsoft Expression Encoder 4,并按照以下说明设置桌面体验:
现在我们有了一个工作的构建场景,我需要在我们的分布式测试代理机器上运行它。在构建服务器上运行codedUI不是一个可行的解决方案。因此,我将以下步骤应用于测试代理计算机,该计算机与构建服务器分离,运行在Windows 7上:
<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="TestSettings" id="caa2702e-3ce5-4b20-be15-5e85ef063642" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Description>These are default test settings for a local test run.</Description>
<Deployment enabled="false" />
<Execution>
<TestTypeSpecific>
<UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
<AssemblyResolution>
<TestDirectory useLoadContext="true" />
</AssemblyResolution>
</UnitTestRunConfig>
<WebTestRunConfiguration testTypeId="4e7599fa-5ecb-43e9-a887-cd63cf72d207">
<Browser name="Internet Explorer 9.0" MaxConnections="6">
<Headers>
<Header name="User-Agent" value="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" />
<Header name="Accept" value="*/*" />
<Header name="Accept-Language" value="{{$IEAcceptLanguage}}" />
<Header name="Accept-Encoding" value="GZIP" />
</Headers>
</Browser>
</WebTestRunConfiguration>
</TestTypeSpecific>
<AgentRule name="LocalMachineDefaultRole">
<DataCollectors>
<DataCollector uri="datacollector://microsoft/VideoRecorder/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder.VideoRecorderDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Screen and Voice Recorder">
</DataCollector>
</DataCollectors>
</AgentRule>
</Execution>
<Properties />
</TestSettings>