के लिए सफल क्लिक और अवरुद्ध करने के बाद विफल रहता है मैंने एस्प्रेसो परीक्षण ढांचे का उपयोग करने की कोशिश की है और एक सरल परीक्षण लिखा है।एस्प्रेसो परीक्षण 60 सेकंड
कुछ भी नहीं है वहाँ फैंसी, बस इस कोड:
onView(withId(R.id.login_button_stub)).perform(click());
टेस्ट एक नेक्सस 5 डिवाइस और Genymotion एंड्रॉयड 5.0 के साथ पर ठीक चलाता है, लेकिन पर एंड्रॉयड एम्यूलेटर 4.x, 5.0, 2.3 Genymotion, 4.x में विफल रहता है और एंड्रॉइड 4.x के साथ एलजी जी 2।
इन सभी उपकरणों/अनुकरणकर्ताओं/सिमुलेटर पर, बटन क्लिक किया गया है और इसकी क्रिया निष्पादित की गई है (मेरे मामले में एक और स्क्रीन पर जा रही है)। समस्या यह है कि यह कुछ उपकरणों पर perform
में अवरुद्ध है। यह 60 सेकंड के बाद एक अच्छा अपवाद के साथ समाप्त होता है:
android.support.test.espresso.PerformException: Error performing 'single click' on view 'with id: com.vielengames.mock:id/login_button_stub'.
...
Caused by: android.support.test.espresso.AppNotIdleException: Looped for 3544 iterations over 60 SECONDS. The following Idle Conditions failed .
...
ध्यान दें कि स्थितियों में विफलता के बारे में कोई जानकारी नहीं है। एस्प्रेसो स्रोत कोड को देखते हुए, मुद्दों की अल्पविराम से अलग सूची होनी चाहिए।
यहां पूरा कोड है: TestCase.java।
और पूर्ण स्टैकट्रेस:
I/TestRunner﹕ android.support.test.espresso.PerformException: Error performing 'single click' on view 'with id: com.vielengames.mock:id/login_button_stub'.
at android.support.test.espresso.PerformException$Builder.build(PerformException.java:83)
at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:70)
at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:53)
at android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:185)
at android.support.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:115)
at android.support.test.espresso.ViewInteraction.perform(ViewInteraction.java:87)
at com.vielengames.ui.NotLoggedOnTestCase.testLoggedOnAfterLoginClick(NotLoggedOnTestCase.java:19)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:115)
at junit.framework.TestResult.runProtected(TestResult.java:133)
at android.support.test.internal.runner.junit3.DelegatingTestResult.runProtected(DelegatingTestResult.java:90)
at junit.framework.TestResult.run(TestResult.java:118)
at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:49)
at junit.framework.TestCase.run(TestCase.java:124)
at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:63)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103)
at android.support.test.internal.runner.junit3.AndroidTestSuite.run(AndroidTestSuite.java:63)
at android.support.test.internal.runner.junit3.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:24)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at org.junit.runner.JUnitCore.run(JUnitCore.java:136)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:270)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
Caused by: android.support.test.espresso.AppNotIdleException: Looped for 3544 iterations over 60 SECONDS. The following Idle Conditions failed .
at android.support.test.espresso.IdlingPolicy.handleTimeout(IdlingPolicy.java:61)
at android.support.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:471)
at android.support.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:402)
at android.support.test.espresso.base.UiControllerImpl.injectMotionEvent(UiControllerImpl.java:226)
at android.support.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:135)
at android.support.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:118)
at android.support.test.espresso.action.Tap.sendSingleTap(Tap.java:135)
at android.support.test.espresso.action.Tap.access$100(Tap.java:35)
at android.support.test.espresso.action.Tap$1.sendTap(Tap.java:40)
at android.support.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:98)
at android.support.test.espresso.ViewInteraction$1.run(ViewInteraction
आपको बहुत बहुत धन्यवाद! यह मुझे पागल कर रहा था; मेरे पास पिछले फ्रेगमेंट में एक कताई एनीमेशन चल रहा था जिसे कभी साफ़ नहीं किया गया था, इसलिए ऐप निष्क्रिय नहीं था और एस्प्रेसो परीक्षण लटकाएंगे। असल में मुझे एक महान सुविधा का एहसास है, क्योंकि यह डेवलपर को एनिमेशन और पृष्ठभूमि कार्यों के साथ साफ-सुथरा करने के लिए मजबूर करता है। – MattMatt
बहुत बहुत धन्यवाद !!! मेरे मामले में, AppBarLayout के ऑफ़सेट चेंजलिस्टर ने लगातार कहा जहां यह ऐपबार को एनीमेशन के साथ अनुकूलित करता है – Rajeshwar