gpt4 book ai didi

android - 从 AndroidTestCase 调用 Activity

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:30 26 4
gpt4 key购买 nike

我正在编写一个 android 测试用例,它需要对被测试的 Activity 执行一个单独的 Activity(不是为了测试,而是为了获得对 contentresolver 的访问权限,以便我可以更改一些电话设置)。

是否可以从测试用例或以其他方式开始 Activity 。

我知道用于测试 Activity 的 AndroidTestCase 类,我在测试中使用它,但是我需要使用 ContentResolver 来更改电话设置,然后测试被测 Activity 的 react ,因此我需要另一个应用程序组件来更改这些设置。

注意:我释放了多个 Activity 测试背后的复杂性(需要 ActivityManager),但我只想使用它的方法来更改设置,这样我什至可以在 onCreate 方法中拥有逻辑。

最佳答案

Android 为测试 Activity 提供了一个特殊的检测框架。您必须使用这个框架,因为 Activity 有一个复杂的生命周期,在这个提供的框架之外是不可调用的。在 Android 文档的开发部分的测试链接下查找 Activity Testing .如果这不能回答您的问题,您可以改写一下。

编辑

您真的应该扩展 ActivityUnitTestCase 来测试 Activity,而不是 AndroidTestCase。您可以获得更多特定于您需要测试的功能。如果您扩展 ActivityUnitTestCase,则会有一个名为 launchActivity 的函数。它将启动您需要的 Activity 并为您提供该 Activity 的实例,以便您可以调用其上的方法,例如 set、get 和 finish。这应该可以完成您一次处理单个和多个 Activity 所需的任何操作。

示例代码:

@MediumTest
public class Test extends ActivityUniTestCase<HelloActivity> {

public Test(Class<HelloActivity> activityClass) {
super(activityClass);
}

@MediumTest
public void testLifeCycleCreate() {
HelloActivity hActivity = startActivity(new Intent(Intent.ACTION_MAIN), null, null);
getInstrumentation().callActivityOnStart(hActivity);
getInstrumentation().callActivityOnResume(hActivity);

GoodByeActivity gActivity = launchActivity("package.goodbye", GoodByeActivity.class, null);
gActivity.finish();
}
}

关于android - 从 AndroidTestCase 调用 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434933/

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