在测试 fragment 时,我们可以使用以下示例代码来解决 Espresso 无法测试 fragement 的问题:
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
import static android.support.test.espresso.contrib.FragmentMatchers.; import static android.support.test.espresso.contrib.FragmentTestUtil.; import static android.support.test.espresso.matcher.ViewMatchers.*;
@Test public void testFragment() { // 判断 Fragment 是否被加载 onView(withId(R.id.fragment_container)).check(matches(isDisplayed()));
// 获取 Fragment MyFragment fragment = (MyFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_container);
// 进行 Fragment 中 View 的测试 onView(withId(R.id.my_view)).check(matches(isDisplayed())); onView(withId(R.id.my_view)).perform(click()); }
在以上示例代码中,我们首先使用 onView(withId(R.id.fragment_container)).check(matches(isDisplayed())) 方法来判断 fragement 是否已被加载。然后,我们可以使用 getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_container) 来获取我们的 fragement。最后,我们可以使用 onView(withId(R.id.my_view)).check(matches(isDisplayed())) 和 onView(withId(R.id.my_view)).perform(click()) 方法来测试我们 fragement 中的视图。