【发布时间】:2016-07-21 21:20:48
【问题描述】:
在运行 Espresso 测试时,我在 Jenkins 和某些队友计算机上收到以下错误。我已经搜索了这个错误,发现它与超时或某些动画有关。所有设备都关闭了动画。
例如:我上周遇到了这个问题,我卸载了所有的 Android Studio,删除了代码,然后重新安装了它。它不起作用。我还升级了 Java 和 JDK。之后我仍然遇到这个问题。然后有一天它就奏效了。我不知道为什么。
现在我的同事遇到了这个问题。当针对一台设备 (5.1) 而不是另一台 (6.0) 运行时,会出现此问题。另一位同事遇到了相反的问题。
所以我的问题是 - 我可以检查什么?要采取什么步骤?我们比较了设备上的注释——所有 IDE 都与版本号和构建工具等相匹配。我的想法不多了。
谢谢!
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)
【问题讨论】:
-
您的应用程序启动时会做什么?它是否在后台执行代码?你的
Application.onCreate()以及当LauncherActivity中的onCreate、onStart和onResume执行时会发生什么?您是否显示不确定的ProgressBar?贴出LauncherActivity的代码及其布局和Application的onCreate。 -
我无法显示任何代码,但我们的应用程序会执行一些后台网络请求、身份验证,并且我们设置了一些单例。我们还显示了一个加载指示器。
-
确保您的设备没有任何安全措施来解锁屏幕。确保在测试开始运行之前解锁屏幕。
标签: android jenkins android-espresso