![](/img/trans.png)
[英]How to select app fro recent apps in android Espresso Instrumentation Test
[英]How to restart Android app within Espresso test?
我将 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)
}
它有效,应用程序重新启动但我不能再与该应用程序交互,因为出于某种原因现在有两个意图正在运行
能得到一个我可以合作的答案会很棒(我对 Espresso 很陌生)
干杯
找到解决办法:
private fun restart() {
Intents.release()
rule.scenario.close()
Intents.init()
ActivityScenario.launch<MainActivity>(intent)
}
似乎作者的答案有一些多余的代码。 以下就够了
activityScenarioRule.scenario.close()
ActivityScenario.launch(YourActivity::class.java, null)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.