Espresso 测试:如何在打开最近的应用程序后重新打开我的应用程序?

Espresso test: How to open my application back after opening the recent apps?

我想在通过调用 pressRecentApps() 方法打开最近的应用程序后,在编写 Espresso 测试用例时重新打开我的应用程序。 除了通过坐标模拟点击之外,还有其他方法可以做到这一点吗?

我会说你不能。一旦您的应用失去焦点,您就倒霉了。

您可以使用 UI Automator

您可以通过调用以下命令使用 Espresso 执行此操作:

val targetContext = InstrumentationRegistry.getTargetContext()
val launchIntent = Intent(targetContext, NameOfTheActivityYouAreTesting::class.java)
activityTestRule.finishActivity()
activityTestRule.launchActivity(launchIntent)

我实际上为此写了一个辅助函数:

inline fun <reified T : Activity> ActivityTestRule<T>.restartActivity() {
  finishActivity()
  launchActivity(Intent(InstrumentationRegistry.getTargetContext(), T::class.java))
}

我这样称呼它:

val activityTestRule = ActivityTestRule(ActivityIAmTesting::class.java)

@Test
fun someEspressoTest() {

  // Some testing ...
  // ...

  activityTestRule.restartActivity()

  // Some more testing...
  // ...

}

如果您 运行 在最近的屏幕有应用程序标签的 API 级别上进行测试,则可以为此使用 UIAutomator

UiDevice device = UiDevice.getInstance(getInstrumentation());
Context appContext = getInstrumentation().getTargetContext();
String appName = appContext.getString(appContext.getApplicationInfo().labelRes);
device.findObject(new UiSelector().text(appName)).click();

试试 UIAutomator。点按两次最近使用的应用程序以返回 Espresso 正在处理的主应用程序。

    uiDevice.pressRecentApps()
    Thread.sleep(1000)
    uiDevice.pressRecentApps()
    Thread.sleep(2000)