当前位置:  开发笔记 > 编程语言 > 正文

Android上的Espresso 2,中间测试在未能启动测试活动后失败,而之前测试的活动仍然存在

如何解决《Android上的Espresso2,中间测试在未能启动测试活动后失败,而之前测试的活动仍然存在》经验,为你挑选了1个好方法。

我正在使用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秒钟.这当然只有在我一次运行多个测试时才会发生.

我的问题是为什么测试之间存在实时活动,是否有一种方法可以使Instrumentation等到上一次测试的活动完成后再进行下一次测试.

如果某人对于为什么测试中间失败有不同的想法,这也会有所帮助.



1> AndroidAva..:

这个问题刚才被问到,但由于这似乎仍然相关,我以为我会分享我发现的东西.我面临着一个类似的问题 - 对具有唯一ID的视图的AmbiguousViewMatcherException,不同的测试随机失败 - 可能是由于活动未被销毁.

这似乎是一个已知问题,应在下一版本中解决(请参阅此处:https://github.com/google/android-testing-support-library/issues/16).显然onDestroy()和isFinishing()在每次测试后都不会被可靠地调用,所以你可能不会每次都获得一个新的Activity,甚至最终会有两个活动在彼此之上.

在他们修复它之前,我决定不浪费时间在一个解决方法上,但开始使用Genymotion模拟器解决了我的问题 - 可能是因为它们比Android Studio中的内置驱动程序运行得更快(如此处所示).

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有