gpt4 book ai didi

android - 如何使用launchActivity将测试从单个测试套件中的 bundle 恢复 Activity 的测试与其他测试保持在一起

转载 作者:行者123 更新时间:2023-12-04 10:59:57 24 4
gpt4 key购买 nike

我有一个用于 android 应用程序的测试套件,用于测试多个场景。对于大多数人来说,使用 AndroidX 测试框架的 launchActivity 是有意义的。

在同一个套件中,我还有测试从包中恢复 Activity 的测试。这些测试需要在开发人员选项中启用“不要保留 Activity ”,因为只有这样才能进行设置,以便使用非空的 savedInstanceState 调用 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)
[...]

我想知道为什么存在这种限制以及如何处理?因为当 Activity 从实例状态恢复时,它会阻止测试场景。

即使 UiAutomator 用于测试从实例状态恢复 Activity 的这些特定测试用例,这些测试也不能真正在同一设备/模拟器上一起运行,因为此设置是系统设置。

或者,可以在测试前后打开和关闭设置,但这只能在根设备上运行,或者需要使用 UiAutomator 来翻转系统设置开关,这非常慢。

最佳答案

原来ActivityScenario's recreate涵盖了这个特定场景:

A current Activity will be destroyed after its data is saved into Bundle with onSaveInstanceState(Bundle), then it creates a new Activity with the saved Bundle. After this method call, it is ensured that the Activity state goes back to the same state as its previous state.

关于android - 如何使用launchActivity将测试从单个测试套件中的 bundle 恢复 Activity 的测试与其他测试保持在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58876346/

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