Android RecyclerView Adapter está dando nulo en la prueba de unidad
Estoy tratando de probar RecyclerView con AndroidJunit4, es mi código de prueba:
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)); } }
Estoy enfrentando un problema para comprobar el adaptador. Aunque productRecyclerView está pasando no una prueba nula y una instancia de RecyclerView, está siguiendo el error en la última línea:
- Activar la vista del reciclador
- RecyclerView con diferentes diseños de tarjetas
- ¿Por qué RecyclerView onBindViewHolder se llama una sola vez?
- Adaptador RecyclerView que toma valores erróneos
- El adaptador RecyclerView y la actualización de ViewHolder se actualizan dinámicamente
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)
¿Cuál es el problema en el código?
- Vista del reciclador que muestra un solo elemento
- Obtener la lista de las casillas marcadas de recyclerview android
- Configurar la imagen de fondo de un CardView dentro de RecyclerView hace que el programa se bloquee al desplazarse
- Cómo implementar load más recyclerview en android
- NotifyItemChanged () hace que el RecyclerView desplace y salte a UP
- Cómo actualizar / actualizar un elemento específico en RecyclerView
- Recycler View Excepción grave: java.lang.ArrayIndexOutOfBoundsException
A juzgar por esta línea:
Se espera: una instancia de com.kaushik.myredmart.adapter.ProductAdapter pero: null
Se puede concluir, que esto:
RecyclerView.Adapter adapter = productRecyclerView.getAdapter();
Devuelve null
, lo que puede ocurrir cuando no se ha realizado productRecyclerView.setAdapter(adapter)
.
Asegúrese de que está configurando correctamente el adaptador en las devoluciones de llamada del ciclo de vida de la actividad (es decir, en onCreate()
). Me parece que está creando y configurando el adaptador después de alguna acción / devolución de llamada.
Como se ha mencionado por @azizbekian, debe establecer el adaptador en onCreate () de la actividad.