11

Espresso UI テストは初めてです。

テストの実行中にこのエラーが発生します (ADT Eclipse IDE )。

アプリはすでに開発されており、アプリの起動中に多くのリクエストが発生しています。アプリを書き換えることはできません。しかし、コンポーネントの読み込みに遅延がある場合でも、この UI をテストする方法を見つける必要があります。

        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. 「Core」という名前のライブラリ プロジェクトが 1 つあります。これは .apk を生成しません。
  2. また、「コア」にアクセスする「AA」と呼ばれる Android プロジェクトが 1 つあります。- これはAA.apkです
  3. 「UItest」というテスト プロジェクトを作成しました。

マニフェスト:

    <?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>

私のテスト:

    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());

        }

    }
4

11 に答える 11

11

Espresso テストでは、テストに使用する仮想デバイスまたは物理デバイスでシステム アニメーションをオフにすることを強くお勧めします。したがって、以下の手順に従って、アニメーションを手動でオフにすることができます。

下:設定 - >
開発者向けオプション - >描画

  1. ウィンドウアニメーションはオフにスケール
  2. トランジション アニメーション スケールを OFF にする
  3. アニメーターのデュレーションスケールをオフに
于 2015-04-08T20:13:44.197 に答える
3

Espresso テストを 6.0 デバイスで実行しているときにこのエラーが発生しましたが、5.1.1 または 7.0 デバイスでは発生しませんでした。android:fadeScrollbarsスタイル内での使用に原因を突き止めました。このアイテムをスタイルから削除すると、問題が解決しました。

于 2017-02-24T02:40:42.020 に答える
0

ユーザーが特定のビューをクリックしたときに別のアクティビティを開くことをテストしようとしたときに、このエラーに直面しました。私が間違っていたのは、置き換えていませんでした:

@Rule
public ActivityTestRule<MyActivity> myActivityActivityTestRule = new ActivityTestRule<>(MyActivity.class);

あたり:

@Rule
public IntentsTestRule<MyActivity> myActivityActivityTestRule =
            new IntentsTestRule<>(MyActivity.class);
于 2019-05-28T16:12:13.927 に答える
0

さて、私の場合は奇妙なことが原因でした。

UI テストの 1 つで外部インテント「android.app.action.CONFIRM_DEVICE_CREDENTIAL」が開かれたため、スタブすることにしました。これ以降、最近のタスクから「android.app.action.CONFIRM_DEVICE_CREDENTIAL」によって開かれた画面を手動で閉じるまで、MAIN インテントは再び起動しませんでした。

なぜこれが起こったのか分かりません。今は調査する時間がありません。後でこのスレッドを更新するかもしれません。

于 2019-04-15T10:41:05.340 に答える