Google Espresso java.lang.RuntimeException: could not launch intent Intent { act=android.Absicht.Aktion.MAIN
Ich bin neu in der Espresso-UI-Tests.
Bin ich immer diese Fehlermeldung beim ausführen von tests (ADT Eclipse-IDE ).
Die app bereits entwickelt ist, und es gibt viele Anfrage geht beim starten der app. es ist nicht möglich, zu schreiben, die app. aber ich muss den Weg finden, um dies zu testen UI-selbst wenn es eine Verzögerung bei der Verladung der Komponenten.
java.lang.RuntimeException: Could not launch intent Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=com.xx.android/com.yy.core.android.map.MapActivity } within 45 seconds. Perhaps the main thread has not gone idle within a reasonable amount of time? There could be an animation or something constantly repainting the screen. Or the activity is doing network calls on creation? See the threaddump logs. For your reference the last time the event queue was idle before your activity launch request was 1390913271702 and and now the last time the queue went idle was: 1390913271767. If these numbers are the same your activity might be hogging the event queue.
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentation.startActivitySync(GoogleInstrumentation.java:277)
at android.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:119)
at android.test.InstrumentationTestCase.launchActivity(InstrumentationTestCase.java:97)
at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:104)
at com.gulesider.android.test.UItest.setUp(UItest.java:25)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onStart(GoogleInstrumentationTestRunner.java:167)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1799)
- Ich habe ein library-Projekt, genannt "Core" - es wird nicht generieren kann .apk
- Auch ich habe ein Android-Projekt namens "AA", die Zugriff auf "Core". - Dies ist AA.apk
- Nun habe ich eine test-Projekt namens "UItest"
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.AA.android.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="18" />
<instrumentation
android:name="com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
android:targetPackage="com.AA.android"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="com.core.android.map.MapActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="android.test.runner" />
</application>
</manifest>
Mein test:
public class UItest extends ActivityInstrumentationTestCase2<MapActivity> {
public UItest() {
super(MapActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
getActivity();
}
public void testSearchBox() {
Espresso.onView(ViewMatchers.withId(R.id.menu_button_logo)).perform(ViewActions.click());
}
}
- poste deinen code, was du getan hast..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für Espresso-Tests ist es dringend empfohlen, dass Sie deaktivieren Sie die system-Animationen auf der virtuellen oder physischen device(s) für die Tests verwendet. So können Sie die Schritte unten, um manuell schalten Sie die Animationen:
Unter:
Einstellungen->
Entwickler-Optionen->
Zeichnung
Wenn es ist ein Fortschrittsbalken zu laufen, wenn Sie erstellen, die Aktivität, erhalten Sie eine Fehlermeldung wie diese. Sie sollte dazu führen, dass eine Haltestelle für den Fortschrittsbalken, um weiterhin mit dem test.
ProgressBar
vielleicht der Grund für diese Ausnahme. Überprüfen Sie, dass Ihre Tätigkeit/fragment hat keine sichtbarenProgressBar
s (und seien Sie vorsichtig bei der Verwendung von alpha-mit ProgressBar)Erlebte ich diesen Fehler während der Ausführung Espresso-tests auf 6.0-Geräte, aber nicht auf 5.1.1 oder 7.0-Geräte. Ich verfolgte die Sache nach unten zu mit
android:fadeScrollbars
innerhalb eines Stylesheets. Entfernen diese Artikel aus meinem Stil, ist das Problem behoben.Wahrscheinlich haben Sie die animation in Ihrem Aktivität, welche Blöcke espresso-Ausführung. Sie haben, um es zu deaktivieren - siehe https://github.com/googlesamples/android-testing/tree/master/ui/espresso/BasicSample
In meinem Fall eine benutzerdefinierte Ansicht verursacht dieses Verhalten. Es enthielt eine Scroller die ständig scrollen. Leider finde ich nicht eine Lösung für dieses Problem bis jetzt, außer es zu deaktivieren für die tests...
Auf der ersten Seite, die Sie aufrufen zu viele Anfrage, die sich die Zeit nehmen, mehr als 15 Sekunden, die erste Seite sollte sehr lightwieght.
Versuchen Sie einfach, indem Sie eine neue willkommen-Seite und rufen dann Ihre original-Seite willkommen.
Hoffe, dass diese Arbeit für Sie.
Gut, in meinem Fall war es verursacht durch eine seltsame Sache.
Einer meiner UI-tests öffnete die externe intent "android.app.Aktion.CONFIRM_DEVICE_CREDENTIAL" also beschloss ich, stub es. Von nun an, die WICHTIGSTE Absicht nicht starten wieder bis ich manuell den Schirm zugemacht oipened von "android.app.Aktion.CONFIRM_DEVICE_CREDENTIAL" von den letzten Aufgaben.
Keine Ahnung, warum dies passiert, und habe jetzt keine Zeit für Forschung. Vielleicht später ich werde diesen thread zu aktualisieren.
Ich gegen diese Fehlermeldung, wenn ich versuchen zu testen, die öffnung einer anderen Aktivität, wenn der Benutzer klickte auf eine bestimmte Ansicht. Was ich Tat, falsch war, nicht zu ersetzen:
Pro: