您可以通过编写一个特殊的活动来做到这一点,其唯一目的是启动您正在测试结果的活动并保存结果以供您断言正确性。
例如,您可以创建一个名为ResultReceiverActivity 的活动。给它三个方法:getResultCode、getResultData 和getReceivedRequestCode,可用于验证测试活动是否返回了正确的值。您将创建一个扩展ActivityInstrumentationTestCase2 的测试用例,通用参数为ResultReceiverActivity。调用getActivity 将获得活动实例。
public class ReturnedResultTest
extends ActivityInstrumentationTestCase2<ResultReceiverActivity> {
public void testReturnedResult() {
ResultReceiverActivity a = getActivity();
assertEquals(Activity.RESULT_OK, a.getResultCode());
assertEquals("myResult", a.getResultData().getStringExtra("test"));
assertEquals(0x9999, a.getReceivedRequestCode());
}
}
ResultReceiverActivity 当然需要覆盖onActivityResult,并且应该只在其字段中存储该方法参数的值,如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
this.receivedRequestCode = requestCode;
this.resultCode = resultCode;
this.resultData = data;
}
当然,您可能想要自定义ResultReceiverActivity 启动的活动,您可以通过在其onCreate 方法中使用getIntent 轻松做到这一点。在您的测试用例中,在调用 getActivity 之前调用 setActivityIntent 以设置用于启动 Activity 的 Intent。