我有一个适用于Android应用程序的测试套件,可以测试多种情况。对于大多数用户而言,使用AndroidX测试框架的launchActivity是有意义的。
在同一套件中,我还具有测试,用于测试从捆绑软件中恢复活动。这些测试要求在开发人员选项中启用“不保留活动”,因为只有这样,才可以直接进行设置,以便使用非空saveInstanceState调用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来翻转系统设置开关,这非常慢。]
我有一个适用于Android应用程序的测试套件,可以测试多种情况。对于大多数用户而言,使用AndroidX测试框架的launchActivity是有意义的。在同一个套件中,我还测试了...
事实证明,ActivityScenario's recreate涵盖了此特定情况: