Sky*_*ing 5 android jenkins android-espresso
运行 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)
Run Code Online (Sandbox Code Playgroud)
我的第一个猜测是,ProgressBar块 Espresso 并且您的内容视图Activity包含一个不确定的ProgressBar,它始终可见或在onResume返回之前变得可见。动画使应用程序保持忙碌状态,而 Espresso 会一直等到超时。这将准确地创建您发布的错误。
因为您的测试有时会起作用,所以我认为其可见性ProgressBar取决于后台任务。如果在 Espresso 超时之前进度条被隐藏(或从视图层次结构中删除),则测试将运行。
第二个猜测是,您正在用于AsyncTasks后台作业。AsyncTasks如果您在返回之前开始长时间运行,onResume这也会导致您发布的错误。
要检查这是否ProgressBar是您可以完全删除它的原因,或者将其不确定的可绘制对象替换为静态可绘制对象(即 a ColorDrawable)。
| 归档时间: |
|
| 查看次数: |
2025 次 |
| 最近记录: |