Ho creato test automatici UI Android e iOS per la mia applicazione Xamarin con il framework Xamarin UITest. Durante l'esecuzione dei test a livello locale, che funzionano bene, ma quando li in esecuzione sul Bitrise CI, i test iOS funzionano bene, ma i test dell'interfaccia utente Android tenere in mancanza con la seguente eccezione:Timeout in attesa del risultato di ClearAppData2 durante l'esecuzione dei test dell'interfaccia utente Xamarin per 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
prova Android sono in esecuzione con Xamarin .Ultima versione 1.3.5. Questo è importante, poiché sembra esserci stato un bug until version 1.3.3. Ho anche provato a ignorare i test falliti, ma poi il test-runner fallisce con altri test di Android. È interessante notare che a volte passano singoli test.
Qualcuno ha riscontrato questo comportamento prima? Hai qualche consiglio su come risolvere questo problema?
Quando decompilazione CommandAdbClearAppData (che genera l'eccezione), vedo
// 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");
che indica che il file generato non è stato trovato entro dieci secondi. Potrebbe essere, che l'emulatore è semplicemente troppo lento e l'emulatore impiega più di dieci secondi per creare quei file?
Quando si eseguono questi test localmente, li si esegue anche su un emulatore? Gli emulatori sono decisamente un po 'più lenti di un dispositivo collegato. Ti consigliamo di provare a modificare la configurazione di "WaitTimes' a un tempo di attesa più lungo: https://developer.xamarin.com/api/member/Xamarin.UITest.Configuration.AndroidAppConfigurator.WaitTimes/p/Xamarin.UITest.Utils.IWaitTimes/ –
Sono sempre in esecuzione i test su un emulatore, ma con gli emulatori che funzionano con le immagini x86 (quindi sono in realtà quasi più veloci dei dispositivi reali). E ho già WaitTimes configurato per sei minuti. –