我正在使用Kotlin编写Espresso进行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还很陌生)。
干杯