UI 测试,无法 运行 iOS ui 测试 - 无法确定 X 的模拟器版本

UI Test, not able to run iOS ui tests - Unable to determine simulator version for X

当我想 运行 我的 UI 测试 iOS 时,我收到以下消息:

SetUp : System.Exception : Unable to determine simulator version for X

堆栈跟踪:

  at Xamarin.UITest.iOS.Instruments.GetMajorVersionForSimulator (System.String deviceIdentifier) [0x0008c] in <2a16c16730a54859bda72c6bc1c728f7>:0 
  at Xamarin.UITest.iOS.iOSAppLauncher.LaunchAppLocal (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, System.Boolean clearAppData) [0x0011a] in <2a16c16730a54859bda72c6bc1c728f7>:0 
  at Xamarin.UITest.iOS.iOSAppLauncher.LaunchApp (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, Xamarin.UITest.TestCloud.TestCloudiOSAppConfiguration testCloudAppConfiguration, Xamarin.UITest.Shared.Http.HttpClient testCloudWsClient, Xamarin.UITest.Shared.Http.HttpClient xtcServicesClient, System.Boolean testCloudUseDeviceAgent) [0x00068] in <2a16c16730a54859bda72c6bc1c728f7>:0 
  at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Execution.IExecutor executor) [0x002af] in <2a16c16730a54859bda72c6bc1c728f7>:0 
  at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration) [0x00000] in <2a16c16730a54859bda72c6bc1c728f7>:0 
  at Xamarin.UITest.Configuration.iOSAppConfigurator.StartApp (Xamarin.UITest.Configuration.AppDataMode appDataMode) [0x00017] in <2a16c16730a54859bda72c6bc1c728f7>:0 
  at UniversalApp.UITests.AppInitializer.StartApp (Xamarin.UITest.Platform platform) [0x0002d] in /Users/testing/backend/src/UniversalApp.UITests/AppInitializer.cs:33 
  at UniversalApp.UITests.DummyTests.BeforeEachTest () [0x00001] in /Users/testing/backend/src/UniversalApp.UITests/DummyTests.cs:26 
  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0003b] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-08/external/bockbuild/builds/mono-x64/mcs/class/corlib/System.Reflection/MonoMethod.cs:305 

当我 运行 在 Android 上进行相同的测试时,一切都很好用。当我从 xcode 10.2 降级到 10.1 时发生了这种情况,所以可能那里出了问题。然而,奇怪的是我可以毫无问题地调试我的 iOS 应用程序。

提前致谢

此问题的原因是 Xcode 10.2 更改了 Xamarin.UITest 与本地 iOS 模拟器的连接方式;在恢复兼容性之前需要更新 Xamarin.UITest。即使你降级到 Xcode 10.1,iOS 模拟器似乎保留了 Xcode 10.2 应用的一些设置,因此根据我在重现问题时的观察,继续阻止测试。

支持 Xcode 10.2 的 Xamarin.UITest 当前版本尚不可用,但我怀疑它会出现在下一个版本中。 (撰写本文时的最新版本是 2.2.7.28-dev)

之前其他 Xcode 更新也发生过这种情况:

更新 3.0.7 的 Xamarin.UITest 解决了我的问题