我在Espresso中编写测试来测试MyFragment。好。
需要在MyFragment中调用自定义方法 customUpdate()的写入测试方法:
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, true, false);
@Before
public void init() {
mActivityRule.launchActivity(intent);
// Here forward to MyFragment
onView(withId(R.id.myTextView)).perform(click());
}
@Test
public void searchAddFavorite() {
// update column in db
MyService.updateColumn(context, 123, Profile.MY_COLUMN_NAME, false);
// here need to call fragment custom method customUpdate()
onView(withId(R.id.searchView)).perform(click());
}
片段中的自定义方法(MyFragment)更改光标。
private void customUpdate() {
cursor = MyService.getCursor(context, someFilter, true);
contactAdapter.changeCursor(cursor);
}
我怎么能这样做?
答案 0 :(得分:0)
答案很简单:您需要获取活动中的片段实例并调用该方法。
如何做到这一点,主要取决于您在活动中添加片段的方式。您在交易期间使用tag
吗?
如果没有,你可能应该。它将为您提供获取实例的最简单方法。如果您不知道如何检查this。
如果您使用标记yourTag
,那么您可以执行以下操作:
@Test
public void searchAddFavorite() {
// update column in db
MyService.updateColumn(context, 123, Profile.MY_COLUMN_NAME, false);
MyFragment fragment = (MyFragment) mActivityRule.getActivity()
.getSupportFragmentManager().findFragmentByTag("yourTag");
fragment.customUpdate();
onView(withId(R.id.searchView)).perform(click());
}
那就是说,对我而言,这听起来并不像你应该在这里进行UI测试。看起来你应该看一下常规的单元测试。