6

I am trying to test RecyclerView with AndroidJunit4, it is my test code:

package com.kaushik.myredmart.ui;
// all includes
@RunWith(AndroidJUnit4.class)
public class ProductListActivityTest {

    @Rule
    public ActivityTestRule<ProductListActivity> rule  = new  ActivityTestRule<>(ProductListActivity.class);

    @Test
    public void ensureListViewIsPresent() throws Exception {
        ProductListActivity activity = rule.getActivity();
        View viewByIdw = activity.findViewById(R.id.productListView);
        assertThat(viewByIdw,notNullValue());
        assertThat(viewByIdw, instanceOf(RecyclerView.class));
        RecyclerView productRecyclerView = (RecyclerView) viewByIdw;
        RecyclerView.Adapter adapter = productRecyclerView.getAdapter();
        assertThat(adapter, instanceOf(ProductAdapter.class));

    }
}

I am facing a problem to check the Adapter. Although productRecyclerView is passing not null test and an instance of RecyclerView, it is following error in last line:

java.lang.AssertionError:
Expected: an instance of com.kaushik.myredmart.adapter.ProductAdapter
but: null
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:956)
at org.junit.Assert.assertThat(Assert.java:923)
at com.kaushik.myredmart.ui.ProductListActivityTest.ensureListViewIsPresent(ProductListActivityTest.java:45)

What is the problem in code?

azizbekian
  • 60,783
  • 13
  • 169
  • 249
dev_android
  • 8,698
  • 22
  • 91
  • 148

1 Answers1

11

Judging from this line:

Expected: an instance of com.kaushik.myredmart.adapter.ProductAdapter but: null

One can conclude, that this:

RecyclerView.Adapter adapter = productRecyclerView.getAdapter();

returns null, which may happen when there has not been performed productRecyclerView.setAdapter(adapter).

Make sure you are correctly setting adapter in activity lifecycle callbacks (i.e. in onCreate()). It seems to me you are creating and setting adapter after some action/callback.

azizbekian
  • 60,783
  • 13
  • 169
  • 249