2016-04-03 5 views
6

के लिए एक्समारिन यूआई टेस्ट चलाने के दौरान ClearAppData2 के परिणाम के लिए प्रतीक्षा करने का समय समाप्त हो गया है मैंने Xamarin UITest ढांचे के साथ अपने Xamarin एप्लिकेशन के लिए स्वचालित एंड्रॉइड और आईओएस यूआई-टेस्ट बनाए हैं। जब परीक्षण स्थानीय स्तर पर चल रहा है, वे ठीक काम करते हैं, लेकिन जब उन्हें Bitrise सीआई पर चल रहा है, आईओएस परीक्षण ठीक चलाते हैं, लेकिन एंड्रॉयड यूआई टेस्ट निम्न अपवादों के साथ बार-बार विफल: Xamarin साथ चल रहे हैंएंड्रॉइड

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 

एंड्रॉयड परीक्षण यूआईटीएस्ट संस्करण 1.3.5। यह महत्वपूर्ण है, क्योंकि ऐसा लगता है कि bug until version 1.3.3 है। मैंने असफल परीक्षणों को अनदेखा करने का भी प्रयास किया है, लेकिन फिर परीक्षण-धावक अन्य एंड्रॉइड परीक्षणों में विफल रहता है। दिलचस्प है कि कभी-कभी व्यक्तिगत परीक्षण पास होते हैं।

क्या किसी ने इससे पहले इस व्यवहार का सामना किया है? क्या आपको यह ठीक करने के बारे में कोई सलाह है?

decompiling 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"); 

जो इंगित करता है कि उत्पन्न फ़ाइल दस सेकंड के भीतर नहीं पाया जा सका। क्या यह हो सकता है कि एमुलेटर बहुत धीमा है और एम्यूलेटर उन फ़ाइलों को बनाने के लिए दस सेकंड से अधिक समय लेता है?

+0

जब आप स्थानीय रूप से इन परीक्षणों को चलाते हैं, तो क्या आप उन्हें एक एमुलेटर पर भी चला रहे हैं? डिवाइस में प्लग किए गए अनुकरणकर्ता निश्चित रूप से थोड़ा धीमे होते हैं। मैं 'प्रतीक्षा समय' कॉन्फ़िगरेशन को लंबे समय तक प्रतीक्षा करने की कोशिश करने की अनुशंसा करता हूं: https://developer.xamarin.com/api/member/Xamarin.UITest.Configuration.AndroidAppConfigurator.WaitTimes/p/Xamarin.UITest.Utils.IWaitTimes/ –

+0

मैं हमेशा एक एमुलेटर पर परीक्षण चला रहा हूं, लेकिन x86 छवियों के साथ चलने वाले अनुकरणकर्ताओं के साथ (इसलिए वे वास्तव में वास्तविक उपकरणों की तुलना में लगभग तेज़ हैं)। और मेरे पास पहले से ही प्रतीक्षा मिनटों को छह मिनट में कॉन्फ़िगर किया गया है। –

उत्तर

0

मुझे लगता है कि youe अपने अनुप्रयोग परीक्षण प्रतीक्षा समय को लागू करें शुरू करने के लिए

_app = ConfigureApp.Android.EnableLocalScreenshots().ApkFile(apkFile).DeviceSerial("###").ApiKey("###").Debug().WaitTimes(new WaitTimes()); 
          .StartApp(); 

प्रतीक्षा समय

public class WaitTimes : IWaitTimes 
{ 
    public TimeSpan GestureWaitTimeout 
    { 
     get { return TimeSpan.FromMinutes(1); } 
    } 
    public TimeSpan WaitForTimeout 
    { 
     get { return TimeSpan.FromMinutes(1); } 
    } 
} 

2 या अगर के लिए अंतर्गत प्रयोग इंतजार कर नहीं तो कुछ configuation में देखने की जरूरत है आप पृष्ठ में कुछ तत्व प्रतीक्षा करते हैं लेकिन तेजी से परीक्षण करें तत्व को प्रतीक्षा करें और फिर परीक्षण को उत्तेजित करें।

_app.WaitForElement(c => c.Marked("Login"), "Time out completed", TimeSpan.FromSeconds(15)); 
    var result = _app.Query(c => c.Marked("Login")); 
Assert.AreEqual(1,result.Length); 
_app.Screenshot("Test passed with sucess"); 

waitimes के लिए इस लिंक का संदर्भ लें और waitelement इस you

+0

मुझे पहले से ही इंतजार करने के लिए छह मिनट इंतजार करने के लिए लागू किया गया था और उनका उपयोग करने के लिए कॉन्फ़िगर किया गया था। समस्या 'CommandAdbClearAppData' में टाइमआउट प्रतीत होती है, है ना? –

1

करने में सहायक होगा यह हो सकता है, कि एमुलेटर बस बहुत धीमी है और एमुलेटर अब दस सेकंड बनाने के लिए की तुलना में ले जाता है वो फाइलें?

हां, यह समस्या हो सकती है।

क्या आपको यह ठीक करने के बारे में कोई सलाह है?

नवीनतम देव Xamarin.UITest nuget पैकेज का निर्माण करता है उस टाइमआउट अंतराल को 10 सेकंड से 60 सेकंड तक बढ़ा दिया है।

Xamarin.UITest 1.3.6.1476-dev या नए का प्रयास करें।

+0

नवीनतम संस्करण (1.3.7-1478-dev) और सब कुछ के बीच अपडेट किया गया - अब तक मेरे एंड्रॉइड टेस्ट के साथ कोई भाग्य नहीं है। अभी वे 30 मिनट के बाद टाइम-आउट (सीआई इसे मारता है)। मैक और विंडोज पर स्थानीय रूप से वे ठीक चलते हैं। –

0

मैंने इस समस्या को अपने परीक्षण डिवाइस (एक्समरिन एंड्रॉइड प्लेयर के लिए एक ही चीज़) में एपीके के एक हस्ताक्षरित संस्करण को अपलोड करने का हल किया। मुझे प्रोजेक्ट गुणों में एंड्रॉइड पैकेज साइनिंग विकल्प से ".APK फ़ाइल साइन इन करें" बॉक्स को अनचेक करना पड़ा। प्रतीक्षा समय रास्ता मेरे लिए काम नहीं किया।