如何从Espresso调用片段自定义方法?

时间:2017-03-22 15:17:10

标签: android android-espresso

我在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);
}

我怎么能这样做?

1 个答案:

答案 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测试。看起来你应该看一下常规的单元测试。