gpt4 book ai didi

android - 如何在 Espresso 测试中重启 Android 应用程序?

转载 作者:行者123 更新时间:2023-12-05 06:06:16 26 4
gpt4 key购买 nike

我正在使用 Espresso 和 Kotlin 来实现 UI 测试自动化。我正在尝试找到一种合适的方法在测试期间重新启动应用程序并再次启动它,因此测试场景如下:

  • 启动应用,进入登录页面
  • 强制关闭应用程序并再次打开(基本上是重新启动)
  • 检查一些东西等

我们的 UI 测试的组织方式:有一个测试类,我有规则

val intent = Intent(ApplicationProvider.getApplicationContext(), MainActivity::class.java)
.putExtra(UI_TEST_INTENT, true)

@get:Rule
val rule = ActivityScenarioRule<MainActivity>(intent)

这个类有Before/After函数和测试函数

我想要的是在单独的类中拥有通用的 restartApp 函数,比方说 TestUtils 并且成为可以在需要时随时调用它。到目前为止,我没有找到解决方案。在 stackoverflow 上有一些类似的问题,但我不确定我是否理解如何使用我找到的答案,如下所示:

with(activityRule) {
finishActivity()
launchActivity(null)

由于 ActivityTestRule 已被弃用并且文档要求使用 ActivityScenarioRule,我试过这个:

@get:Rule
val rule = ActivityScenarioRule<MainActivity>(intent)

private fun restart() {
rule.scenario.close()
rule.scenario.recreate()
}

但它得到 java.lang.NullPointerException

另一种选择是

private fun restart() {
pressBackUnconditionally()
Intents.release()
ActivityScenario.launch<MainActivity>(intent)
}

它有效,应用程序重新启动但我不能再与该应用程序交互,因为出于某种原因现在有两个 Intent 正在运行

如果能得到一个我可以使用的答案会很棒(我对 Espresso 还很陌生)

干杯

最佳答案

找到解决方案:

private fun restart() {
Intents.release()
rule.scenario.close()
Intents.init()
ActivityScenario.launch<MainActivity>(intent)
}

关于android - 如何在 Espresso 测试中重启 Android 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65826130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com