Espresso录制的测试在45秒内无法启动意图

时间:2018-10-13 00:03:27

标签: android testing android-testing android-espresso

我有一个android应用程序,我想运行Espresso录制的仪器化测试。我已经记录了测试,并且Epresso为我生成了测试类。我的应用程序从一个持续3000毫秒的SplashScreen类开始,然后SplashScreen启动MainActivity。 Espresso正在使用Thread.sleep(3000)生成延迟,然后进行测试。

  • 问题是测试卡在了“开始运行的测试”上,永远无法启动。 当我没有睡眠并且在SplashScreen中将时间设置为0毫秒时,我会收到此错误 java.lang.RuntimeException:无法在45秒内启动意图Intent {act = android.intent.action.MAIN flg = 0x14000000 cmp = uk.co.irokottaki.moneycontrol / .SplashScreen}。也许主线程在合理的时间内没有空闲?可能会有动画或不断重绘屏幕的内容。还是该活动在创建时进行网络调用?请参阅线程转储日志。供您参考,事件队列在您的活动启动请求之前的最后一次空闲时间是1539387625836,现在队列最后一次空闲的时间是:1539387625836。如果这些数字相同,那么您的活动可能会占用事件队列。

  • 我对此进行了很多研究,但是尝试了一些建议,但没有解决方案对我有效。我从未见过要执行的测试。我已经在模拟器和真实设备中进行了尝试,但是我看到的是相同的行为,该应用程序启动了,什么也没发生。

这是我的app / build.gradle

// src/entry.js
import React from 'react';
import ReactDOM from 'react-dom';
import Loadable from 'react-loadable';
import App from './components/App';

Loadable.preloadReady().then(() => {
  ReactDOM.hydrate(<App/>, document.getElementById('app'));
});

这是Espresso生成的测试类

apply plugin: 'com.android.application'
android {
    compileSdkVersion 26


    defaultConfig {
        applicationId "uk.co.irokottaki.moneycontrol"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 31
        versionName "5.1"

        // Enabling multidex support.
        multiDexEnabled true
        testInstrumentationRunner = 'android.support.test.runner.AndroidJUnitRunner'

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        checkReleaseBuilds false
        //Or, if you prefer, you can continue to check for errors in release builds
        //but continue the build even when errors are found:
        abortOnError false
        disable 'InvalidPackage'
    }
    useLibrary 'org.apache.http.legacy'

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
    }
    testOptions {
        unitTests {
            includeAndroidResources = true
        }
        unitTests.returnDefaultValues = true

    }
}


dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation files('libs/mpandroidchartlibrary-2-1-5.jar')
    implementation project(':mm-ad-sdk')
    implementation files('libs/itextpdf-5.5.9.jar')
    implementation 'com.android.support:appcompat-v7:23.4.0'
    implementation 'com.android.support:support-v4:23.4.0'
    implementation 'com.google.android.gms:play-services:9.2.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.0-beta1'
    implementation 'com.android.support:multidex:1.0.0'

    implementation 'com.havenondemand:hodclient:2.1'
    implementation 'com.havenondemand:hodresponseparser:2.1'

    implementation 'com.dropbox.core:dropbox-core-sdk:2.0.1'
    implementation 'com.squareup.picasso:picasso:2.5.2'


    testImplementation 'junit:junit:4.12'
    testImplementation 'org.mockito:mockito-core:1.10.19'
    //testImplementation 'com.android.support.test:rules:1.0.2'
    testImplementation 'org.robolectric:robolectric:3.8'
    testImplementation "org.robolectric:multidex:3.4.2"
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
        exclude group: 'com.android.support', module: 'appcompat'
        exclude group: 'com.android.support', module: 'support-v4'
    }
    androidTestImplementation 'com.android.support.test:rules:1.0.2'

    androidTestImplementation('com.schibsted.spain:barista:2.7.0') {
        exclude group: 'com.android.support'

    }

    configurations.all {
        resolutionStrategy.force 'com.android.support:support-annotations:23.4.0'
    }

}

MainActivity从SplashScreen启动,SplashScreen是一个图像/徽标,加载时间为3000ms,然后该应用程序启动。

0 个答案:

没有答案