为VS2012,2013,2015提供Coded-UI支持

时间:2015-12-16 03:21:32

标签: visual-studio-2012 coded-ui-tests

我已成功为VS2010中的自定义控件实现了Coded UI支持。但是当我尝试将这些项目升级到VS2012,VS2013或VS2015时,发生了以下异常。请在下面找到异常堆栈跟踪:

示例代码:

if (uiTestControl.ControlType == ControlType.Table)
{
    //To-Do
}

例外:

System.InvalidCastException was unhandled
  HResult=-2147467262
  Message=Invalid cast from 'System.String' to 'Microsoft.VisualStudio.TestTools.UITesting.ControlType'.
  Source=mscorlib
  StackTrace:
       at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
       at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
       at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
       at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetPropertyInternal[T](String propertyName)
       at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.get_ControlType()
       at CustomControl.GetPropertyNames(UITestControl uiTestControl) in d:\Coded_UI_Source\Src\CustomExtensionProvider\CustomPropertyProvider.cs:line 94
       at Microsoft.VisualStudio.TestTools.UITesting.ALUtility.GetProperties(UITestPropertyProvider provider, UITestControl uiControl, UITestPropertyAttributes attributes, UITestPropertyAttributes ignoreAttributes)
       at Microsoft.VisualStudio.TestTools.UITesting.UITestControl.GetReadableAndAssertablePropertyNames()
       at Microsoft.VisualStudio.TestTools.CodedUITest.Controls.UIControlLocator.UIControlFinder.FetchProperties(UITestControl element)
       at Microsoft.VisualStudio.TestTools.CodedUITest.Controls.UIControlLocator.UIControlFinder.PopulateUITestControlDetails(UITestControl element, UIControlDetails uiControlDetails)
       at Microsoft.VisualStudio.TestTools.CodedUITest.Controls.UIControlLocator.UIControlFinder.CaptureControl(UITestControl element)
       at Microsoft.VisualStudio.TestTools.CodedUITest.Controls.UIControlLocator.UIControlFinder.PlaybackThreadproc()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:

请帮助我克服这个问题,也请告诉我在VS2012,2013和2015年是否需要做任何事情来支持。

1 个答案:

答案 0 :(得分:0)

问题出现在您的代码CustomPropertyProvider.cs:第94行,它正在调用从控件类型查找的get_ControlType()。在尝试将控件类型的名称转换为Type时,您似乎无法在自定义控件中正确设置控件类型。

 at CustomControl.GetPropertyNames(UITestControl uiTestControl) in d:\Coded_UI_Source\Src\CustomExtensionProvider\CustomPropertyProvider.cs:line 94