我有一个用于 android 应用程序的测试套件,测试多个场景。对于他们中的大多数人来说,使用 AndroidX 测试框架的 launchActivity 是有意义的。
在同一个套件中,我也有测试从包中恢复活动的测试。这些测试需要在开发人员选项中启用“不保留活动”,因为只有这样才能直接进行设置,以便使用非空的已保存实例状态调用 onCreate。
但是,当Don't keep activities
在开发人员选项中启用时,launchActivity 会失败并IllegalStateException
显示以下堆栈跟踪:
java.lang.IllegalStateException: "Don't keep activities" developer options must be disabled for ActivityScenario
at androidx.test.internal.util.Checks.checkState(Checks.java:96)
at androidx.test.core.app.ActivityScenario.launchInternal(ActivityScenario.java:218)
at androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:190)
[...]
我想知道为什么存在这种限制以及如何处理?因为当活动从实例状态恢复时,它会阻止测试场景。
即使 UiAutomator 用于这些特定测试用例测试从实例状态恢复活动,测试也不能真正在同一设备/模拟器上一起运行,因为此设置是系统设置。
或者,可以在测试之前和之后打开和关闭设置,但这只能在根设备上工作,或者需要使用 UiAutomator 来翻转系统设置开关,这非常慢。