Cómo probar proveedores de contenido

Si implementas un proveedor de contenido para almacenar y recuperar datos, hacer que los datos sean accesibles a otras apps, debes probar tu proveedor para garantizar que no se comporta de forma inesperada. En esta lección, se describe cómo probar proveedores de contenido y también es aplicable a los proveedores que mantienes en privado tu propia aplicación.

Cómo crear pruebas de integración para proveedores de contenido

Los proveedores de contenido permiten acceder a datos de usuarios reales, por lo que es importante que pruebes el proveedor de contenido en un entorno de pruebas aislado. Esta permite ejecutar solo las dependencias de datos establecidas de forma explícita en el caso de prueba. También significa que las pruebas no modifican los datos reales del usuario. Para ejemplo, debes evitar escribir una prueba que falle porque quedaban datos en comparación con una prueba anterior. Del mismo modo, tu prueba debe evitar agregar o borrar la información de contacto real de un proveedor.

Para probar tu proveedor de contenido de forma aislada, usa ProviderTestCase2. clase. Esta clase te permite usar clases de objetos ficticios de Android, como IsolatedContext y MockContentResolver para acceder al archivo y información de la base de datos sin afectar los datos reales del usuario.

La prueba de integración se debe escribir como una clase de prueba JUnit 4. Para obtener más información sobre la creación de clases de prueba de JUnit 4 y el uso de aserciones de JUnit 4, consulta Cómo crear un Clase de prueba de unidad local

Si quieres crear una prueba de integración para tu proveedor de contenido, debes realizar estas pasos:

  1. Crea la clase de prueba como una subclase de ProviderTestCase2.
  2. Especifica la clase AndroidJUnitRunner que proporciona AndroidX Test. como ejecutor de pruebas predeterminado.
  3. Configura el objeto Context de la clase ApplicationProvider. Consulta la a continuación para ver un ejemplo.

Kotlin


@Throws(Exception::class)
override fun setUp() {
  super.setUp()
  context = ApplicationProvider.getApplicationContext<Context>()
}

Java


@Override
protected void setUp() throws Exception {
  super.setUp();
  setContext(ApplicationProvider.getApplicationContext());
}

Cómo funciona ProviderTestCase2

Pruebas un proveedor con una subclase ProviderTestCase2. Esta clase base extiende AndroidTestCase, por lo que proporciona el framework de prueba de JUnit como y métodos específicos de Android para probar los permisos de las aplicaciones. El más de esta clase es su inicialización, que crea la entorno de prueba aislado.

Inicialización

La inicialización se realiza en el constructor de ProviderTestCase2, que las subclases llaman en sus propios constructores. El ProviderTestCase2 crea un objeto IsolatedContext que permite almacenar y bases de datos, pero elimina otras interacciones con el sistema Android. Las operaciones con archivos y bases de datos se llevan a cabo en un directorio local en el dispositivo o emulador, y tiene un prefijo especial.

Luego, el constructor crea un MockContentResolver para usar como agente de resolución. para la prueba.

Por último, el constructor crea una instancia del proveedor bajo evaluación. Este es un objeto ContentProvider normal, pero toma todo su entorno información del IsolatedContext, por lo que está restringido a trabajar en el entorno de pruebas aislado. Se ejecutan todas las pruebas realizadas en la clase del caso de prueba contra este objeto aislado.

Debes ejecutar pruebas de integración para proveedores de contenido de la misma manera que se instrumentaron y pruebas de unidades.

Qué debes probar

Estas son algunas pautas específicas para probar los proveedores de contenido.

  • Prueba con los métodos del agente de resolución, aunque puedes crear una instancia de un proveedor. objeto en ProviderTestCase2, siempre debes realizar pruebas con un objeto de resolución mediante el URI adecuado. Esto garantiza que estés probando el proveedor y realizan la misma interacción que usaría una aplicación normal.
  • Probar un proveedor público como un contrato: Si desea que su proveedor sea público y disponible para otras aplicaciones, debe probarlo como un contrato. Estos son algunos ejemplos de cómo hacerlo:
    • Prueba con constantes que tu proveedor expone públicamente. Por ejemplo, mira para las constantes que hacen referencia a los nombres de las columnas en una de las tablas de datos del proveedor. Estas siempre deben ser constantes que el proveedor defina de manera pública.
    • Prueba todos los URI que ofrece tu proveedor. Tu proveedor puede ofrecer varias Son los URI, cada uno se refiere a un aspecto diferente de los datos.
    • Prueba los URIs no válidos. Las pruebas de unidades deben llamar deliberadamente al proveedor con un URI no válido y buscar errores. Un buen diseño de proveedor es arrojar IllegalArgumentException para URI no válidos.
  • Prueba las interacciones estándar con proveedores: La mayoría de los proveedores ofrecen seis tipos de acceso. métodos: query(), insert(), delete(), update(), getType() y onCreate() Tus pruebas deben verificar que funcionen todos estos métodos.
  • Prueba la lógica empresarial: Si el proveedor de contenido implementa la lógica empresarial, tú deberías probarlo. La lógica empresarial incluye el manejo de valores no válidos, datos cálculos aritméticos, eliminación o combinación de duplicados.