我正在编写一个android测试用例,它要求对正在测试的活动执行单独的活动(不是为了测试,而是为了访问contentresolver,以便可以更改一些电话设置)。
是否可以从测试用例或以其他方式启动活动。
我知道androidtestcase类用于测试活动,我正在测试中使用它,但是我需要使用contentresolver来更改电话设置,然后测试被测活动的反应,因此我需要另一个应用程序组件来更改这些设置。
注意:我释放了多活动测试背后的复杂性(需要一个activitymanager),但我只想使用它的方法来更改设置,这样我甚至可以在oncreate方法中使用逻辑。
最佳答案
android为测试活动提供了一个特殊的测试框架。您必须使用此框架,因为活动有一个复杂的生命周期,无法在此提供的框架之外调用。在android文档的development部分的testing链接下查找Activity Testing。如果这不能回答你的问题,你可以换个说法。
编辑
您应该扩展activityunittestcase来测试活动,而不是androidtestcase。您将获得更多特定于您需要测试的功能。如果扩展ActivityUnitTestCase,则有一个名为launchActivity的函数。它将启动所需的活动,并为您提供活动的实例,以便您可以对其调用set、get和finish等方法。这应该可以完成一次操作单个和多个活动所需的任何操作。
示例代码:
@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();
}
}