Я создал автоматические UI-тесты для Android и iOS для своего приложения Xamarin с рамочной платформой Xamarin UITest. При выполнении тестов на местном уровне, они прекрасно работают, но при работе их на Bitrise CI, тесты IOS работать нормально, но Android тесты UI держать неудачу за исключением следующего:Сроки ожидания результата ClearAppData2 при запуске тестов Xamarin UI для Android
StartFirstActivity_WaitForActivity_ExpectButtonToHaveText
SetUp : System.Exception : Timed out waiting for result of ClearAppData2
Stack trace:
at Xamarin.UITest.Shared.Android.Commands.CommandAdbClearAppData.Execute (IProcessRunner processRunner, IAndroidSdkTools androidSdkTools) <0x38b3e90 + 0x0064b> in <filename unknown>:0
at Xamarin.UITest.Shared.Execution.Executor.Execute[TDep1,TDep2] (ICommand2 command) <0x32b6478 + 0x00092> in <filename unknown>:0
at Xamarin.UITest.Shared.Android.LocalAndroidAppLifeCycle.EnsureInstalled (Xamarin.UITest.Shared.Android.ApkFile appApkFile, Xamarin.UITest.Shared.Android.ApkFile testServerApkFile) <0x37418c8 + 0x0017a> in <filename unknown>:0
at Xamarin.UITest.Android.AndroidApp..ctor (IAndroidAppConfiguration appConfiguration) <0x31a15e8 + 0x0047a> in <filename unknown>:0
at Xamarin.UITest.Configuration.AndroidAppConfigurator.StartApp (AppDataMode appDataMode) <0x30b4298 + 0x00063> in <filename unknown>:0
at SightPlayer.Core.Test.AppInitializer.StartApp (Platform platform) <0x30b2448 + 0x000ef> in <filename unknown>:0
at SightPlayer.Core.Test.Tests.BeforeEachTest() <0x30b23f8 + 0x00013> in <filename unknown>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) <0x30b2208 + 0x00093> in <filename unknown>:0
тест Android работают с Xamarin .UITest версия 1.3.5. Это важно, поскольку, как представляется, существует bug until version 1.3.3. Я также попытался проигнорировать неудачные тесты, но затем тест-бегун терпит неудачу с другими тестами Android. Интересно, что иногда проходят отдельные тесты.
Неужели кто-нибудь сталкивался с этим поведением раньше? У вас есть какие-либо советы относительно того, как это исправить?
Когда декомпилирование CommandAdbClearAppData (который выбрасывает исключение), я вижу
// ISSUE: reference to a compiler-generated field
string str1 = string.Format("/data/data/{0}/files/calabash_failure.out", (object)executeCAnonStorey0.svr);
// ISSUE: reference to a compiler-generated field
string str2 = string.Format("/data/data/{0}/files/calabash_finished.out", (object)executeCAnonStorey0.svr);
while (DateTime.UtcNow < utcNow + TimeSpan.FromSeconds(10.0))
{
if (func(string.Format("ls {0}", (object)str1)).Output.Trim().Equals(str1))
throw new Exception("Clear app data failed with " + func(string.Format("cat {0}", (object)str1)).Output);
if (func(string.Format("ls {0}", (object)str2)).Output.Trim().Equals(str2) && func(string.Format("cat {0}", (object)str2)).Output.Trim().Equals("SUCCESSFUL"))
return;
}
throw new Exception("Timed out waiting for result of ClearAppData2");
, который указывает, что сгенерированный файл не может быть найден в течение десяти секунд. Может быть, эмулятор просто слишком медленный, и для создания этих файлов эмулятор занимает больше 10 секунд?
Когда вы запускаете эти тесты локально, вы также запускаете их на эмуляторе? Эмуляторы, безусловно, немного медленнее, чем подключенное устройство. Я бы рекомендовал попробовать изменить конфигурацию 'WaitTimes' на более длительное время ожидания: https://developer.xamarin.com/api/member/Xamarin.UITest.Configuration.AndroidAppConfigurator.WaitTimes/p/Xamarin.UITest.Utils.IWaitTimes/ –
Я всегда запускаю тесты на эмуляторе, но с эмуляторами, которые работают с изображениями x86 (так что они на самом деле почти быстрее, чем реальные устройства). И у меня уже есть WaitTimes, настроенный на шесть минут. –