在我们的Espresso测试中,我们需要自定义启动意图以传递自定义附加功能等。因此,我们将launchActivity
标记设置为false
:
@Rule
public final ActivityTestRule<CreateQuoteActivity> mActivityRule = new ActivityTestRule<>(
CreateQuoteActivity.class, true, false
);
现在,我想获得对被测活动的引用。如果该标记为true
,我会使用mActivityRule.getActivity()
。但是,现在mActivityRule.getActivity()
会返回null
。
如何获得对活动的引用?
答案 0 :(得分:2)
如果您已将launchActivity
设置为false
,则只有在实际开始并启动时才能访问该活动。
所以,你的活动背景就在那里:
final CreateQuoteActivity activity = mActivityRule.launchActivity(mIntent);
答案 1 :(得分:0)
使用ActivityTestRule
,您可以为每个测试配置一个Intent。
@Test
public void myTest() {
Intent intent = new Intent();
intent.putExtra(TAG_EXTRA, XXX);
mActivityRule.launchActivity(intent);
//......
}
如果所有测试的意图相同,您可以使用@Before
方法设置它。
@Before
public void setUp() {
Intent intent = new Intent();
intent.putExtra(TAG_EXTRA, XXX);
mActivityRule.launchActivity(intent);
}
答案 2 :(得分:-1)
如果您启动活动,然后在此之后启动第二个活动,则可以使用已发布的方法html()
来获取当前已恢复的活动实例。
有问题的基本代码如下。
public static Activity getActivityInstance() {
getInstrumentation().runOnMainSync(new Runnable() {
public void run() {
Collection resumedActivities = ActivityLifecycleMonitorRegistry.getInstance()
.getActivitiesInStage(RESUMED);
if (resumedActivities.iterator().hasNext()) {
resumedActivity = (Activity) resumedActivities.iterator().next();
}
}
});
return resumedActivity;
}