当所有测试一起运行时,Android Instrumented 测试失败

Posted

技术标签:

【中文标题】当所有测试一起运行时,Android Instrumented 测试失败【英文标题】:Android Instrumented tests fail when all run together 【发布时间】:2017-03-22 14:17:21 【问题描述】:

我正在使用 espresso 运行 android 仪器测试。

我有超过 70 个测试要运行,它们都点击了我的应用程序的不同部分。

当我将每个测试作为一个单独的测试运行时,它们都可以工作,并且我得到一个绿色的测试结果。

当我同时运行它们时(右键单击 androidTest 文件夹 -> 点击运行),其中一些会失败,说找不到视图。

在不同的运行中,不同的测试都失败了。我认为这可能是这里进展得太快了。

你们对如何解决这个问题有什么建议吗? 提前非常感谢您!

【问题讨论】:

【参考方案1】:

在Espresso setup instructions 的Setup your test environment 部分中,您有:

在您的设备上,在“设置”->“开发者选项”下禁用以下 3 个设置:

窗口动画比例

过渡动画比例

动画持续时间比例

动画可能与您的怀疑有关:这里有些事情进展得太快了

您也可以在测试方法中使用Thread.sleep(1000);(毫秒)来延迟某些调用

无论如何,上面没有任何代码,这只是一个猜测......

【讨论】:

谢谢。关闭动画并没有多大作用。插入暂停有助于使其更稳定。但并不是真正的 100%。这也让我的测试变得非常缓慢。你能提示我一些我可以发布的有助于理解项目的代码吗?因为在我看来,我只是有很多不同的 UI 测试,每个测试做不同的事情并在不同的时间崩溃。 -> 我将进一步调查,看看我是否能找到一种模式,它的测试完全失败以及在什么条件下失败。再次感谢!

以上是关于当所有测试一起运行时,Android Instrumented 测试失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 Android-Espresso 运行多个测试时出现内存不足异常

将 ProGuard / Dexguard 与多个 Android Studio 模块一起使用

当所有测试都是最新的时如何运行 Gradle 测试?

如何在集成了 Flutter 模块的 Android 应用上运行 UI 测试?

通过Maven一起运行jUnit和spock测试

元素在运行时不保留其 Storyboard 可访问性标识符或类型