añado esta entrada ya que creo que puede ayudar a los programadores que quieran probar su proveedor de contenido.
Imagine que su proveedor de contenido se llama MyProvider y que tiene una clase de contrato llamada MyProviderContract que define algunas constantes.
Antes que nada, escribirás una clase de prueba llamada MyProviderTestCase
que hereda de ProviderTestCase2<MyProvider>
. Vas a tener que definir un constructor que se llame a la super
constructor:
public MyProviderTestCase() {
super(MyProvider.class, MyProviderContract.AUTHORITY);
}
Entonces, en lugar de utilizar directamente su proveedor (evitar el uso de getProvider()
como usuarios de su proveedor de contenidos no tendrán acceso a él directamente), utilice el getMockContentResolver()
para obtener una referencia a un solucionador de contenido y luego llamar a los métodos de este solucionador de contenido (query
, insert
, etc.). En el siguiente código, muestro cómo probar el método insert
.
public void testInsert() {
Uri uri = MyProviderContract.CONTENT_URI;
ContentValues values = new ContentValues();
values.put(MyProviderContract.FIELD1, "value 1");
values.put(MyProviderContract.FIELD2, "value 2");
Uri resultingUri = getMockContentResolver().insert(uri, values);
// Then you can test the correct execution of your insert:
assertNotNull(resultingUri);
long id = ContentUris.parseId(resultingUri);
assertTrue(id > 0);
}
A continuación, puede añadir tantos métodos de prueba que desee, utilizando un dispositivo de resolución contenido en lugar de su proveedor de contenido directamente, como lo haría usuarios de su proveedor de contenido.
No hay mucho código de muestra en la clase ProviderTestCase2 en Internet. Esto es muy útil. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
En [Documentación de Android] (http://developer.android.com/tools/testing/contentprovider_testing.html#WhatToTest), recomiendan no usar directamente su proveedor de contenido y pasar a través de un solucionador de contenido en su lugar. Acabo de leer mi publicación para ver un ejemplo más adecuado de cómo probar un proveedor de contenido. – eternay