2014-01-28 10 views
6

Ich bin neu im Espresso UI-Test.Google Espresso java.lang.RuntimeException: Intent konnte nicht gestartet werden Intent {act = android.intent.action.MAIN

Ich bekomme diesen Fehler beim Ausführen von Tests (ADT Eclipse IDE).

Die App ist bereits entwickelt und es gibt viele Anfragen beim Start der App. Es ist nicht möglich, die App neu zu schreiben. aber ich muss den Weg finden, diese Benutzeroberfläche zu testen, auch wenn es eine Verzögerung beim Laden der Komponenten gibt.

 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) 
  1. Ich habe eine Bibliothek-Projekt „Core“ genannt - es wird keine APK erzeugen
  2. Auch ich habe ein Android-Projekt „AA“ genannt, die „Core“ zugreifen. - Dies ist AA.apk
  3. Jetzt habe ich ein Testprojekt erstellt 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()); 

     } 

    } 
+3

poste deinen Code was du getan hast .. –

Antwort

0

Auf der ersten Seite Sie werden zu viele Anfragen anfordern, die mehr als 15 Sekunden dauern, die erste Seite sollte sehr hell sein. Versuchen Sie es einfach, indem Sie eine neue Willkommensseite erstellen und dann Ihre ursprüngliche Willkommensseite aufrufen. Hoffe, diese Arbeit für Sie.

3

Für Espresso Testing wird dringend empfohlen, dass Sie Systemanimationen auf den virtuellen oder physischen Geräten deaktivieren, die zum Testen verwendet werden. So können Sie die folgenden Schritte aus, um manuell die Animationen zu deaktivieren:

Under: Einstellungen->
Entwickler Optionen-> Zeichnung

  1. Fenster Animationen Skala auf OFF
  2. Transition Animation Skala OFF
  3. Animator Dauer Skala auf OFF
+0

Ich frage mich, wenn es eine Beschreibung, warum dies ist passiert und wie man dies löst ohne Animation auszuschalten –

4

Wenn es Wenn beim Erstellen der Aktivität ein Fortschrittsbalken angezeigt wird, wird ein Fehler wie dieser angezeigt. Sie sollten einen Stopp für den Fortschrittsbalken verursachen, um den Test fortzusetzen.

+0

Ja, das ist richtig - sichtbar 'ProgressBar' ist vielleicht der Grund für diese Ausnahme. Überprüfen Sie, ob Ihre Aktivität/Ihr Fragment keine sichtbaren ProgressBars enthält (und seien Sie vorsichtig, wenn Sie Alpha mit ProgressBar verwenden) – xCh3Dx

1

In meinem Fall verursachte eine benutzerdefinierte Ansicht dieses Verhalten. Es enthielt eine Scroller, die ständig scrollte. Leider habe ich bis jetzt keine Lösung für dieses Problem gefunden, außer es für die Tests zu deaktivieren ...

+0

Wie haben Sie es deaktiviert? –

+0

Ich sagte der Ansicht, die eine benutzerdefinierte war, nicht zu scrollen, wenn ein Test ausgeführt wurde. Um festzustellen, ob es lief, habe ich die folgende Lösung verwendet: http://stackoverflow.com/a/28701836/3734116 –

2

Ich habe diesen Fehler beim Ausführen von Espressotests auf 6.0-Geräten, aber nicht auf 5.1.1- oder 7.0-Geräten festgestellt. Ich habe die Ursache bis auf android:fadeScrollbars innerhalb eines Stils verfolgt. Durch das Entfernen dieses Elements aus meinem Stil wurde das Problem behoben.