Espresso 可以在没有意图启动活动的情况下工作吗?
Posted
技术标签:
【中文标题】Espresso 可以在没有意图启动活动的情况下工作吗?【英文标题】:Can Espresso work without launching activity with intent? 【发布时间】:2019-01-30 16:48:06 【问题描述】:我想编写一个 Espresso 测试,该测试将使用我平板电脑屏幕上当前启动的活动。因此,我将在启动测试之前手动导航到具有适当内容的该活动,因为很难且不愿意编写额外的代码来在应用程序中以相同的全局“状态”启动此活动并在启动时传递所有需要的参数意图等等。
是否有可能以及如何使用 Espresso, 还是我必须使用 UI Automator?
【问题讨论】:
你能提供一个你想采取什么行动的例子吗?如果它只是像用户那样打开应用程序并导航到一个活动,那么这应该不是 Espresso 的问题。 一个机器人,我希望 Espresso 测试能够在页面上填充大量输入字段,但我会在运行测试之前手动打开所需的页面(活动)。但是,当我运行测试时,android Studio 似乎也在“重新启动”我的应用程序。 @Mike 你的意图破坏了自动化测试的整个想法......并且可能比编写测试规则然后简单地使用它们,同时获得新鲜咖啡更浪费时间。此外,它还可能会扭曲结果的准确性。 @Mike 您可以这样做,首先您必须打开所需的活动,然后从该活动中,您只需编写 onView(withId(Id of view)).perform(click() ) 方法来打开将具有多个输入字段的活动。 @Mike 当您运行测试用例时,它将始终启动应用程序,因此手动打开的屏幕在任何情况下都不起作用,您必须打开该屏幕或测试用例中的活动。 【参考方案1】:如果您绝对不想设置启动要测试的活动的意图,那么您可以在测试中使用断点。这将允许您在 Espresso 测试开始执行之前手动导航到活动。 不过,我想说的是,至少您应该使用 Espresso 来自动执行这些手动步骤。
@Test
fun testActivityIsDisplayed()
openTestActivity() //automate with espresso or put breakpoint to do manually
onView(withId(R.id.testActivity)).check(matches(isDisplayed()))
private fun openTestActivity()
...
【讨论】:
好吧,似乎只有这样可能。我会考虑有意识地启动,虽然这个想法让我很困扰,因为活动在中间的某个地方,而不是可以从外部调用的屏幕以上是关于Espresso 可以在没有意图启动活动的情况下工作吗?的主要内容,如果未能解决你的问题,请参考以下文章
从 Maps Intent espresso 回到活动 - UI 测试
Espresso 不使用 Gif 动画运行 Activity 测试
在一个活动中,如果活动被暂停,然后用一个意图调用,getIntent() 返回旧的