Android RecyclerView Adapter is giving null on unit testing

dev_android :

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 :

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.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=467504&siteId=1