ProviderTestCase2.getProvider () es nulo

Estoy tratando de probar una clase ContentProvider, y no puedo hacer que funcione.

GetProvider () sigue devolviendo null, pero como entiendo del código ProviderTestCase2.setUp (), no debería hacerlo.

public class NotesProviderTest extends ProviderTestCase2<NotesProvider> { ... public NotesProviderTest() { super(NotesProvider.class, Contract.AUTHORITY); } @Override protected void setUp() throws Exception { super.setUp(); } public void testNoteProvider__inserts_a_valid_record() throws Exception { Note note = new Note(new JSONObject(simpleNoteJson)); NotesProvider provider = getProvider(); Uri insert = provider.insert(Note.URI, note.getContentValues()); assertEquals(1L, ContentUris.parseId(insert)); Cursor cursor = provider.query(Note.URI, null, null, new String[]{}, null); assertNotNull(cursor); cursor.close(); } } 

Nota: el proveedor funciona si se utiliza dentro de la aplicación.

Gracias por adelantado.

2 Solutions collect form web for “ProviderTestCase2.getProvider () es nulo”

Acabo de ejecutar este problema yo mismo. Debe indicarle a AndroidJUnit4 que ejecute el método setUp con la anotación @Before. Si no lo hace, el método setUp no se llamará antes de que se ejecute la prueba de unidad.

El fragmento de código para reemplazar el método setUp en http://developer.android.com/training/testing/integration-testing/content-provider-testing.html es engañoso y no menciona que necesita una anotación @Before.

Pruebe lo siguiente:

 @Before @Override public void setUp() throws Exception { setContext(InstrumentationRegistry.getTargetContext()); super.setUp(); } 

Como parte del método setUp () se debe crear un MockContentResolver. Utilícelo para crear e inyectar al proveedor.

Vea la clase MockContentResolver: http://developer.android.com/reference/android/test/mock/MockContentProvider.html

Fuente del ejemplo: http://alvinalexander.com/java/jwarehouse/android/test-runner/src/android/test/ProviderTestCase2.java.shtml

Muestra parcial del ejemplo en el enlace anterior:

  @Override protected void setUp() throws Exception { super.setUp(); mResolver = new MockContentResolver(); final String filenamePrefix = "test."; RenamingDelegatingContext targetContextWrapper = new RenamingDelegatingContext( new MockContext2(), // The context that most methods are delegated to getContext(), // The context that file methods are delegated to filenamePrefix); mProviderContext = new IsolatedContext(mResolver, targetContextWrapper); mProvider = mProviderClass.newInstance(); mProvider.attachInfo(mProviderContext, null); assertNotNull(mProvider); mResolver.addProvider(mProviderAuthority, getProvider()); } 
  • Optimizar el esfuerzo de prueba de Android
  • Android Marshmallow Permisos de Pruebas
  • Pruebas de facturación en la aplicación con cuentas de prueba
  • Saltar prueba para la variante de construcción específica en Android + Gradle?
  • Espresso prueba pegado / inactivo después de realizar (haga clic ()) en el botón en ViewAnimator
  • ¿Cómo probar una ListActivity burlándose de su contentProvider y así aislar la prueba de la base de datos?
  • Cómo generar html informe con gradle 1.12?
  • ¿Hay un comando ADB para habilitar / deshabilitar datos móviles? (Dispositivo enraizado)
  • ¿Por qué no hay instrumentación de prueba para BroadcastReceiver?
  • Android: ¿Cómo puedo guardar, borrar y restaurar SharedPreferences para la prueba de unidades?
  • Android en las pruebas de suscripción de aplicaciones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.