我有一个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,然后该应用程序启动。