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:
- Crea la clase de prueba como una subclase de
ProviderTestCase2
. - Especifica la clase
AndroidJUnitRunner
que proporciona AndroidX Test. como ejecutor de pruebas predeterminado. - Configura el objeto
Context
de la claseApplicationProvider
. 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()
yonCreate()
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.