运行测试时出现Android/Espresso意图错误
我在Jenkins和某些队友的电脑上得到了下面的错误,当运行浓缩咖啡测试时。我搜索了这个错误,发现它与超时或一些动画有关。所有设备都关闭了动画 例如:上周我收到了这个问题,我卸载了所有的Android Studio,删除了代码,然后重新安装。它不起作用。我还升级了Java和JDK。在那之后,我仍然得到这个问题。然后有一天它就开始工作了。我不知道为什么 现在我的同事们都遇到了这个问题。在一个设备(5.1)而不是另一个设备(6.0)上运行时,会出现此问题。另一位同事遇到了相反的问题 所以我的问题是-我可以检查什么?将采取哪些步骤?我们比较了设备上的注释——所有IDE都与版本号和构建工具相匹配,等等。我的想法快用完了 谢谢运行测试时出现Android/Espresso意图错误,android,jenkins,android-espresso,Android,Jenkins,Android Espresso,我在Jenkins和某些队友的电脑上得到了下面的错误,当运行浓缩咖啡测试时。我搜索了这个错误,发现它与超时或一些动画有关。所有设备都关闭了动画 例如:上周我收到了这个问题,我卸载了所有的Android Studio,删除了代码,然后重新安装。它不起作用。我还升级了Java和JDK。在那之后,我仍然得到这个问题。然后有一天它就开始工作了。我不知道为什么 现在我的同事们都遇到了这个问题。在一个设备(5.1)而不是另一个设备(6.0)上运行时,会出现此问题。另一位同事遇到了相反的问题 所以我的问题是-
java.lang.RuntimeException: Could not launch intent Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=com.COMPANY.espresso/com.COMPANY.activity.LauncherActivity } 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 1469050322683 and now the last time the queue went idle was: 1469050322683. If these numbers are the same your activity might be hogging the event queue.
at android.support.test.runner.MonitoringInstrumentation.startActivitySync(MonitoringInstrumentation.java:360)
at android.support.test.rule.ActivityTestRule.launchActivity(ActivityTestRule.java:219)
at android.support.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:268)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:59)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:262)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1862)
我的第一个猜测是,
ProgressBar
会阻止浓缩咖啡,并且您的活动的内容视图包含一个不确定的ProgressBar
,它在onResume
返回之前始终可见或变为可见。动画会让应用程序保持忙碌,而浓缩咖啡会一直等到超时。这将完全创建您发布的错误
因为您的测试有时会工作,所以我假设ProgressBar
的可见性取决于后台任务。如果在Espresso超时之前进度条被隐藏(或从视图层次结构中删除),则测试将运行
第二种猜测是,您正在为后台作业使用AsyncTasks
。如果在onResume
返回之前开始长时间运行AsyncTasks
,这也会创建您发布的错误
若要检查ProgressBar
是否是您可以完全删除它的原因,或将其不确定的可绘制部分替换为静态可绘制部分(即彩色可绘制部分)。请清理项目并创建项目
同时关闭虚拟或物理设备上的系统动画。应用程序启动时会执行什么操作?它是否在后台执行代码?在您的应用程序.onCreate()
中发生了什么?当执行启动器活动的onCreate
、onStart
和onResume
时会发生什么?是否显示不确定的进度条
?发布LauncherActivity
的代码及其布局,以及应用程序的onCreate
。我无法显示任何代码,但我们的应用程序会执行一些后台网络请求、身份验证,我们还设置了一些单例。我们还显示了一个加载指示器。请确保您的设备没有任何安全措施来解锁屏幕。在测试开始运行之前,确保屏幕已解锁。