2

我想通过 Espresso 测试 MyApp。MyApp 可以进行 AndroidForWork 注册。注册后设备上会有2个MyApps:一个是个人资料,另一个是工作资料,如下所示:(我只是以下载应用程序为例。) 带有个人资料和工作资料的应用程序

在此处输入图像描述

我的问题:是否可以使用 espresso 来测试个人和工作资料应用程序?如果是怎么办?

我要测试的内容:

  1. 启动 MyApp(带有个人资料,还没有 MyApp 的工作资料)。-- 浓缩咖啡效果很好。
  2. 做 AndroidForWork 注册——Espresso 工作正常,然后生成带有工作配置文件的 MyApp。
  3. 使用工作配置文件启动 MyApp 并对其进行测试。——我不知道该怎么做。My Espresso 只启动了带有个人资料的 MyApp。两个 MyApps(带有个人或工作资料)具有完全相同的包名称。

顺便说一句,我尝试 UIAutomator 使用工作配置文件测试 MyApp,但 MyApp 有一些网页,UIAutomator 无法识别其中的 Web 元素。这就是为什么我仍然想使用 Espresso 来测试带有工作配置文件的 MyApp。

4

1 回答 1

0

一些可能的选项可能是(阻止活动启动):

使用 InstrumentationRegistry 启动针对配置文件的意图

InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("am start --user <USER_ID> -n <appId>/<activity>")

pm list users例如获取 UserInfo )

使用 UIAutomator 启动目标应用程序:

String appDrawer = "Apps";
String appTitle = "<App title>";

UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
device.pressHome();

if (device.hasObject(By.descStartsWith(appDrawer))) {
    device.findObject(By.descStartsWith(appDrawer)).click();
}

UiScrollable apps = new UiScrollable(new UiSelector().scrollable(true));
apps.scrollForward();
apps.scrollTextIntoView(appTitle);
List<UiObject2> items = device.findObjects(By.text(appTitle));

//TODO validate items content and identify the correct index
items.get(index).click();
于 2018-06-09T14:31:36.047 回答