У меня есть фрагмент Android, который я хочу протестировать. Я создал тестовую активность, к которой я добавляю этот фрагмент, и запускаю некоторые тесты эспрессо.
Однако Espresso не находит ни одного из видов внутри фрагмента. Он сбрасывает иерархию представления, и все пусто.
Я не хочу использовать действительную родительскую активность. Я хочу просто проверить этот фрагмент изолированно. Кто-нибудь сделал это? Есть ли образец с похожим кодом?
@RunWith(AndroidJUnit4.class)
class MyFragmentTest {
@Rule
public ActivityTestRule activityRule = new ActivityTestRule<>(
TestActivity.class);
@Test
public void testView() {
MyFragment myFragment = startMyFragment();
myFragment.onEvent(new MyEvent());
// MyFragment has a recyclerview.
//OnEvent is EventBus callback that in this test contains no data.
//I want the fragment to display empty list text and hide the recyclerView
onView(withId(R.id.my_empty_text)).check(matches(isDisplayed()));
onView(withId(R.id.my_recycler)).check(doesNotExist()));
}
private MyFragment startMyFragment() {
FragmentActivity activity = (FragmentActivity) activityRule.getActivity();
FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
MyFragment myFragment = new MyFragment();
transaction.add(myFragment, "myfrag");
transaction.commit();
return myFragment;
}
}