2

背景:

我们的 Android 应用程序 onCreate 启动了一些初始化用例,这些用例执行一些网络 API 调用。

同时,启动了我们的 LAUNCHER Activity。

在我们的 UI 测试中,我们使用 MockWebServer 来存根 API 响应,我们使用 ANDROIDX_TEST_ORCHESTRATOR 1.1.1

问题:

在涉及 Main Activity 的 UI 测试中,我们希望从测试中为初始化 API 调用存根不同的响应。

换句话说,每个测试都应该能够指定初始化 API 调用返回的响应。

但是,由于初始化服务在 Activity 之前启动,并且 UI 测试中的所有代码在应用程序启动之后运行。我们无法影响之前发生的反应。

问题:

有没有办法从测试中手动启动应用程序,就像我们可以对 Activity 使用 ActivityTestRule 一样?这将允许我们根据测试的要求存根初始化 API 调用,然后启动应用程序。

4

1 回答 1

0

如果您检查ActivityTestRule文档:

ActivityTestRule (Class<T> activityClass, 
                boolean initialTouchMode, 
                boolean launchActivity)

false所以你可以设置launchActivity参数:

@Rule
public final ActivityTestRule<ActivityToTest> mActivityRule = 
    new ActivityTestRule<>(ActivityToTest.class, true, false);

并在测试开始时执行您需要的事情,然后在您想要的时刻以 null 作为参数启动活动:

mActivity = mActivityRule.launchActivity(null);

或有必要的附加功能,以防您需要它们:

Intent intent = new Intent();
intent.putExtra("your_key", "your_value");
mActivity = mActivityRule.launchActivity(intent);
于 2019-11-27T12:21:47.423 回答