UI测试中在Application类中进行的模拟API调用

背景

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

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

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

问题:

在涉及Main activity的UI测试中,我们希望针对测试中的初始化API调用添加不同的响应。

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

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

问题:

是否有一种方法可以像在activity中使用activityTestRule一样从Test中手动启动应用程序?这将使我们能够根据测试的需求对初始化API调用进行存根,然后启动应用程序。

yangfengx 回答:UI测试中在Application类中进行的模拟API调用

如果您查看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);
本文链接:https://www.f2er.com/3037100.html

大家都在问