gpt4 book ai didi

android - 作为 UI 测试的一部分在 Application 类中进行的模拟 API 调用

转载 作者:行者123 更新时间:2023-11-30 04:56:35 25 4
gpt4 key购买 nike

背景:

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

同时,启动我们的 LAUNCHER Activity。

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

问题:

在涉及主 Activity 的 UI 测试中,我们希望对来自测试的初始化 API 调用进行不同的响应。

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

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

问题:

有没有一种方法可以像我们对 Activity 使用 ActivityTestRule 那样从测试中手动启动应用程序?这将使我们能够根据测试要求对初始化 API 调用进行 stub ,然后启动应用程序。

最佳答案

如果您检查 ActivityTestRule 文档:

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

因此您可以将 launchActivity 参数设置为 false:

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

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

mActivity = mActivityRule.launchActivity(null);

或者在您需要的情况下使用所需的额外功能:

Intent intent = new Intent();
intent.putExtra("your_key", "your_value");
mActivity = mActivityRule.launchActivity(intent);

关于android - 作为 UI 测试的一部分在 Application 类中进行的模拟 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59030276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com