Class中的Playback.Initialize在测试代理机器上从测试控制器运行时,Initialize会抛出异常 [英] Playback.Initialize in Class Initialize throws exception when run on Test agent machine from test controller

查看:79
本文介绍了Class中的Playback.Initialize在测试代理机器上从测试控制器运行时,Initialize会抛出异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在Class Initialize方法中做一些与UI相关的事情。我看到播放没有初始化,并在我的类初始化程序中调用Plaback.Initialize()。当我在本地运行测试时,这工作正常。但是,当我使用Visual
studio的测试控制器在安装了测试代理的另一台机器上远程运行测试时,我收到以下错误。

< ErrorInfo> < Message>类初始化方法Tests.Scenario1.Initialize引发异常。 Microsoft.VisualStudio.TestTools.UITest.Extension.PlaybackFailureException:Microsoft.VisualStudio.TestTools.UITest.Extension.PlaybackFailureException:
无法对控件执行''。其他详细信息:未指定控件详细信息。 ---> System.Runtime.InteropServices.COMException:错误HRESULT已从调用COM组件返回E_FAIL。< / Message> <堆栈跟踪> at
Microsoft.VisualStudio.TestTools.UITesting.Playback上的Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.InitPlayback()中的Microsoft.VisualStudio.TestTools.UITest.Playback.Engine.IRPFPlayback.SetSkipStepEventName(String skipStepEventName) .Initialize()
---内部异常堆栈跟踪的结束---在Microsoft.VisualStudio.TestTools.UITesting.Playback的Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowComException(COMException innerException,IPlaybackContext context)中。在C:\ Workspace \Tests \Scenario1.cs中的Tests.Scenario1.Initialize(TestContext testContext)中的Microsoft.VisualStudio.TestTools.UITesting.Playback.Initialize()中的MapAndThrowException(SystemException
异常,IPlaybackContext上下文) :第101行< / StackTrace> < / ErrorInfo>


< DebugTrace> V,3236,45,2011 / 09 / 05,11:10:55.336,6743170522,QTAgent32.exe,CodedUITest:CodedUITestExtension.Initialize( )V,3236,45,2011 / 09 / 11,11:10:55.368,6743319699,QTAgent32.exe,CodedUITest:CodedUITestExtension.BeforeClassInitialize()
V,3236,45,2011 / 09/05: 10:55.430,6743553289,QTAgent32.exe,AL:Playback.Initialize V,3236,45,2011 / 09 / 05,11:10:55.446,6743562518,QTAgent32.exe,UITestService Ctor V,3236,45,2011 / 09 / 05,11:10:55.446,6743563438,QTAgent32.exe,UITestService.Initialize
I,3236,45,2011 / 09 / 05,11:10:55.446,6743569684,QTAgent32.exe,ExtensionFramework:检查程序集文件C:\Program Files\Microsoft Visual Studio 10.0 \Common7 \IDE \ PrivateVitsAssemblies; \\ Microsoft.VisualStudio.TestTools.UITest.Extension.IE.dll I,3236,45,
2011/09 / 05,11:10:55.446,6743602618,QTAgent32.exe,ExtensionFramework:汇编文件C:\Program Files \ Microsoft Visual Studio 1 0.0\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.TestTools.UITest.Extension.IE.dll具有程序集级别属性Microsoft.VisualStudio.TestTools.UITest.Extension.UITestExtensionPackageAttribute
使用类型Microsoft.VisualStudio定义.TestTools.UITest.Extension.IE.IEExtensionPackage I,3236,45,2011 / 09/11:11:55.446,6743603541,QTAgent32.exe,ExtensionFramework:汇编文件C:\Program Files \ Microsoft Visual Studio 10.0 \ Common7 \IDE \ Private_semblies\Microsoft.VisualStudio.TestTools.UITest.Extension.IE.dll
实现类型为Microsoft.VisualStudio.TestTools.UITest.Extension.IE.IEExtensionPackage I,3236的扩展包, 45,2011 / 09 / 11,11:10:55.461,6743658773,QTAgent32.exe,ExtensionFramework:成功创建并注册了类型为Microsoft.VisualStudio.TestTools.UITest.Extension.IE.IEExtensionPackage的实例
I,3236, 45,2011 / 09 / 11,11:10:55.461,6743659131,QTAgent32.exe,ExtensionFramewor k:检查程序集文件C:\Program Files \ Microsoft Visual Studio 10.0 \Common7 \IDE \ Private_partrations \ Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.dll I,3236,45,
2011/09/05,11:10:55.477,6743672018,QTAgent32.exe,ExtensionFramework:汇编文件C:\Program Files \ Microsoft Visual Studio 10.0 \Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio。 TestTools.UITest.Extension.Uia.dll具有程序集级别属性Microsoft.VisualStudio.TestTools.UITest.Extension.UITestExtensionPackageAttribute
使用类型Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.UiaExtensionPackage I,3236,45定义, 2011/09 / 15,11:10:55.477,6743672273,QTAgent32.exe,ExtensionFramework:汇编文件C:\Program Files \ Microsoft Visual Studio 10.0 \ Common7 \IDE \ PrivateAssemblies\Microsoft.VisualStudio.TestTools .UITest.Extension.Uia.dll
实现类型为Microsoft.VisualSt的扩展包udio.TestTools.UITest.Extension.Uia.UiaExtensionPackage I,3236,45,2011 / 09 / 11,11:10:55.493,6743751757,QTAgent32.exe,ExtensionFramework:已成功创建并注册了Microsoft.VisualStudio.TestTools类型的实例。 UITest.Extension.Uia.UiaExtensionPackage
I,3236,45,2011 / 09 / 11,11:10:55.493,6743752000,QTAgent32.exe,ExtensionFramework:检查程序集文件C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.TestTools.UITesting.dll I,3236,45,2011 / 09/05,
11:10:55.493,6743755198,QTAgent32.exe, ExtensionFramework:程序集文件C:\Program Files \ Microsoft Visual Studio 10.0 \Common7 \IDE \PublicAssemblies\Microsoft.VisualStudio.TestTools.UITesting.dll具有程序集级别属性Microsoft.VisualStudio.TestTools.UITest.Extension。使用类型Microsoft.VisualStudio.TestTools.UITesting.UITestingExtensionPackag定义的UITestExtensionPackageAttribute
e I,3236,45,2011 / 09 / 11,1:10:55.493,6743755464,QTAgent32.exe,ExtensionFramework:汇编文件C:\Program Files \ Microsoft Visual Studio 10.0 \ Common7 \IDE \ PublicAssemblies \ Microsoft.VisualStudio.TestTools.UITesting.dll
实现扩展包,类型为Microsoft.VisualStudio.TestTools.UITesting.UITestingExtensionPackage I,3236,45,2011 / 09 / 11,11:10:55.618,6744170642,QTAgent32 .exe,ExtensionFramework:已成功创建并注册了Microsoft.VisualStudio.TestTools.UITesting.UITestingExtensionPackage类型的实例
V,3236,45,2011 / 09 / 05,11:10:55.633,6744237857,QTAgent32.exe,播放 - 开始播放\ 0 W,3236,45,2011 / 09 / 05,11:10:55.633,6744239548,QTAgent32.exe,播放 - [警告]内部警告:播放引擎已初始化且SkipStepThreadEvent
有已创建。创建事件后,无法更改事件的名称。 \0 V,3236,45,2011 / 09 / 05,11:10:55.649,6744291552,QTAgent32.exe,PERF:Playback.Initialize:耗时206毫秒。 V,3236,45,2011 / 09 / 11,11:10:55.649,6744292913,QTAgent32.exe,CodedUITest
:CodedUITestExtension.AfterClassInitialize()V,3236,8,2011 / 09 / 05,11:10 :55.727,6744590258,QTAgent32.exe,CodedUITest:CodedUITestExtension.Dispose()< / DebugTrace> < /输出>


 


当我在注释掉UI相关代码时,测试代理在本地和远程测试都运行良好类初始化程序。但我需要在Class Initializer中做与UI相关的事情,因为它非常重要。有人可以帮忙吗?


Madhu

解决方案

这对我有用。可能会有轻微的性能损失。但是,阻止我把剩下的头发拉出来。我注意到,当我中止测试运行并导致Playback初始化被搞砸时,就会发生这种情况。


        [AssemblyInitializeAttribute()]

        public static void AssembyInitialize(TestContext TestContext)

        {

            if(Playback.IsInitialized)

            {

                Playback.Cleanup();

                Playback.Initialize();

            }


        }


        [AssemblyCleanupAttribute()]

        public static void AssembyCleanup()

        {

            if(Playback.IsInitialized)

            {

                Playback.Cleanup();

            }


        }


I need to do some UI related stuff in Class Initialize method. I see that Playback is not initialized and call Plaback.Initialize() in my Class Initializer. This works fine when I run the tests locally. However, when I use the test controller with Visual studio to run the tests remotely on another machine which has Test Agent installed I get the following error.

<ErrorInfo> <Message>Class Initialization method Tests.Scenario1.Initialize threw exception. Microsoft.VisualStudio.TestTools.UITest.Extension.PlaybackFailureException: Microsoft.VisualStudio.TestTools.UITest.Extension.PlaybackFailureException: Cannot perform '' on the control. Additional Details: The control details were not specified. ---> System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component..</Message> <StackTrace> at Microsoft.VisualStudio.TestTools.UITest.Playback.Engine.IRPFPlayback.SetSkipStepEventName(String skipStepEventName) at Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.InitPlayback() at Microsoft.VisualStudio.TestTools.UITesting.Playback.Initialize() --- End of inner exception stack trace --- at Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowComException(COMException innerException, IPlaybackContext context) at Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException(SystemException exception, IPlaybackContext context) at Microsoft.VisualStudio.TestTools.UITesting.Playback.Initialize() at Tests.Scenario1.Initialize(TestContext testContext) in C:\Workspace\Tests\Scenario1.cs:line 101 </StackTrace> </ErrorInfo>

<DebugTrace>V, 3236, 45, 2011/09/05, 11:10:55.336, 6743170522, QTAgent32.exe, CodedUITest : CodedUITestExtension.Initialize() V, 3236, 45, 2011/09/05, 11:10:55.368, 6743319699, QTAgent32.exe, CodedUITest : CodedUITestExtension.BeforeClassInitialize() V, 3236, 45, 2011/09/05, 11:10:55.430, 6743553289, QTAgent32.exe, AL : Playback.Initialize V, 3236, 45, 2011/09/05, 11:10:55.446, 6743562518, QTAgent32.exe, UITestService Ctor V, 3236, 45, 2011/09/05, 11:10:55.446, 6743563438, QTAgent32.exe, UITestService.Initialize I, 3236, 45, 2011/09/05, 11:10:55.446, 6743569684, QTAgent32.exe, ExtensionFramework : Examining Assembly File C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.TestTools.UITest.Extension.IE.dll I, 3236, 45, 2011/09/05, 11:10:55.446, 6743602618, QTAgent32.exe, ExtensionFramework : Assembly file C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.TestTools.UITest.Extension.IE.dll has assembly level attribute Microsoft.VisualStudio.TestTools.UITest.Extension.UITestExtensionPackageAttribute defined with type Microsoft.VisualStudio.TestTools.UITest.Extension.IE.IEExtensionPackage I, 3236, 45, 2011/09/05, 11:10:55.446, 6743603541, QTAgent32.exe, ExtensionFramework : Assembly File C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.TestTools.UITest.Extension.IE.dll implements extension package with type Microsoft.VisualStudio.TestTools.UITest.Extension.IE.IEExtensionPackage I, 3236, 45, 2011/09/05, 11:10:55.461, 6743658773, QTAgent32.exe, ExtensionFramework : Successfully created and registered instance of type Microsoft.VisualStudio.TestTools.UITest.Extension.IE.IEExtensionPackage I, 3236, 45, 2011/09/05, 11:10:55.461, 6743659131, QTAgent32.exe, ExtensionFramework : Examining Assembly File C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.dll I, 3236, 45, 2011/09/05, 11:10:55.477, 6743672018, QTAgent32.exe, ExtensionFramework : Assembly file C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.dll has assembly level attribute Microsoft.VisualStudio.TestTools.UITest.Extension.UITestExtensionPackageAttribute defined with type Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.UiaExtensionPackage I, 3236, 45, 2011/09/05, 11:10:55.477, 6743672273, QTAgent32.exe, ExtensionFramework : Assembly File C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.dll implements extension package with type Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.UiaExtensionPackage I, 3236, 45, 2011/09/05, 11:10:55.493, 6743751757, QTAgent32.exe, ExtensionFramework : Successfully created and registered instance of type Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.UiaExtensionPackage I, 3236, 45, 2011/09/05, 11:10:55.493, 6743752000, QTAgent32.exe, ExtensionFramework : Examining Assembly File C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.TestTools.UITesting.dll I, 3236, 45, 2011/09/05, 11:10:55.493, 6743755198, QTAgent32.exe, ExtensionFramework : Assembly file C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.TestTools.UITesting.dll has assembly level attribute Microsoft.VisualStudio.TestTools.UITest.Extension.UITestExtensionPackageAttribute defined with type Microsoft.VisualStudio.TestTools.UITesting.UITestingExtensionPackage I, 3236, 45, 2011/09/05, 11:10:55.493, 6743755464, QTAgent32.exe, ExtensionFramework : Assembly File C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.TestTools.UITesting.dll implements extension package with type Microsoft.VisualStudio.TestTools.UITesting.UITestingExtensionPackage I, 3236, 45, 2011/09/05, 11:10:55.618, 6744170642, QTAgent32.exe, ExtensionFramework : Successfully created and registered instance of type Microsoft.VisualStudio.TestTools.UITesting.UITestingExtensionPackage V, 3236, 45, 2011/09/05, 11:10:55.633, 6744237857, QTAgent32.exe, Playback - Starting Playback\0 W, 3236, 45, 2011/09/05, 11:10:55.633, 6744239548, QTAgent32.exe, Playback - [WARNING] Internal warning: Playback engine is already initialized and SkipStepThreadEvent has been created. Cannot change the name of event after its is created. \0 V, 3236, 45, 2011/09/05, 11:10:55.649, 6744291552, QTAgent32.exe, PERF: Playback.Initialize: took 206 ms. V, 3236, 45, 2011/09/05, 11:10:55.649, 6744292913, QTAgent32.exe, CodedUITest : CodedUITestExtension.AfterClassInitialize() V, 3236, 8, 2011/09/05, 11:10:55.727, 6744590258, QTAgent32.exe, CodedUITest : CodedUITestExtension.Dispose() </DebugTrace> </Output>

 

The tests run fine both locally and remotely on the test agent when i comment out the UI related code in Class Initializer. But I need to do that UI related stuff in Class Initializer as it is really important. Can someone help?


Madhu

解决方案

This worked for me. Might have a slight performance penalty. But, stopped me from pulling the rest of my hair out. I noticed that it happens when i abort a test run and causing the Playback initialization to get screwed up.

        [AssemblyInitializeAttribute()]
        public static void AssembyInitialize(TestContext TestContext)
        {
            if (Playback.IsInitialized)
            {
                Playback.Cleanup();
                Playback.Initialize();
            }

        }

        [AssemblyCleanupAttribute()]
        public static void AssembyCleanup()
        {
            if (Playback.IsInitialized)
            {
                Playback.Cleanup();
            }

        }


这篇关于Class中的Playback.Initialize在测试代理机器上从测试控制器运行时,Initialize会抛出异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆