我基本上是有一个自定义IdlingResource
,需要一个View
构造函数的参数.我找不到真正谈论如何实现它的任何地方.
我正在尝试使用这个答案:https://stackoverflow.com/a/32763454/1193321
正如你所看到的,它需要一个ViewPager
,但是当我IdlingResource
在我的测试课程中注册时,我不确定如何获得我的观点.
我已经尝试了findViewById()
,我已经尝试了当前正在运行的活动然后调用findViewById()
它,没有运气.
任何人都知道在这种情况下该怎么做?
弄清楚了.要使视图传递到空闲资源,您所要做的就是获取ActivityTestRule的成员变量
例如:
@Rule public ActivityTestRuleactivityTestRule = new ActivityTestRule<>( MainActivity.class);
然后打电话 getActivity().findViewById(R.id.viewId)
所以最终的结果是:
activityTestRule.getActivity().findViewById(R.id.viewId);
只要测试在同一活动中运行,接受的答案就会起作用.但是,如果测试导航到另一个活动activityTestRule.getActivity()
将返回错误的活动(第一个).要解决这个问题,可以创建一个返回实际活动的辅助方法:
public Activity getCurrentActivity() { final Activity[] currentActivity = new Activity[1]; InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { CollectionallActivities = ActivityLifecycleMonitorRegistry.getInstance() .getActivitiesInStage(Stage.RESUMED); if (!allActivities.isEmpty()) { currentActivity[0] = allActivities.iterator().next(); } } }); return currentActivity[0]; }
然后它可以用作以下内容:
Activity currentActivity = getCurrentActivity(); if (currentActivity != null) { currentActivity.findViewById(R.id.viewId); }