如何在每次 UI 测试后使用 'pm clear' 清理应用程序数据

How to clean application data with 'pm clear' after each UI test

我开始使用 Espresso Framework 和 UI Automator 在 android 中编写 UI 测试。

所以我写了 3 个不同的 UI 测试,它们都包含身份验证过程。当我 运行 每个单独测试时,它们工作得很好。 但是,当我 运行 所有 3 个测试都使用 ./gradlew connectedAndroidTest 时,第一个测试通过而其他 2 个测试失败,因为它自动登录(我使用 webview 登录,所以它会将我重定向到主屏幕)。我试过 但没用。

我要存档的是,在每次测试后,使用清除数据 InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("pm clean com.example.app") 并为每个测试重新开始。

当我在@After 中执行这个时,测试崩溃了:

Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Process crashed.''.

知道如何存档吗?

我建议您使用 Android Test Orchestrator,因为它将 运行 每个测试都放在一个单独的进程中,这意味着不会与其他测试共享任何状态或数据。