【发布时间】:2016-01-05 16:29:48
【问题描述】:
我正在使用 Espresso 2 测试我的 Android 应用。中间我看到测试随机失败并显示此 Espresso 失败消息:
失败:testLongPressXXXXX (com.company.xxx.tests.testSuite.Test) ----- 开始异常 ----- android.support.test.espresso.NoMatchingViewException:层次结构中找不到匹配的视图:id:com.company.xxx:id/xxx_view_id 查看层次结构: +>DecorView{id=-1, visibility=VISIBLE, width=729, height=319, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled =true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0 , y=0.0, child-count=1} ...
每次测试开始时,Espresso 仪器都会打印出前一次测试中仍然存在的活动数量:
MonitoringInstrumentation:仍处于 CREATED 到 STOPPED 的活动:(数量)
每当我看到一个失败的测试时,我总是看到活跃活动的数量不是 0,这让我相信这就是这个问题的原因,即使大多数时候在测试之前有活跃的活动仍然顺利通过。
发生这种情况时,设备只会在主屏幕上显示大约 10 秒钟,然后才会失败。当然,这只有在我一次运行多个测试时才会发生。
我的问题是为什么在测试之间会有实时活动,有没有办法让仪器等到前一个测试的活动完成后再进行下一个测试。
如果有人对测试中间失败的原因有不同的想法,那也会有所帮助。
【问题讨论】:
-
首先,在您的设备/模拟器中打开“开发者选项”并将所有动画设置为从
1x、3x到none。然后运行测试 - 你会看到不同 ;-) -
感谢 piotrek 我这样做了,它仍然会在中间发生。我还可以看到,之前测试的 live Activity 数量仍然不是 0。