What is the recommended way to get this done programmatically?
La única opción posible es ejecutar comandos ADB adb shell pm clear package
antes de la prueba. El mayor problema es que es una especie de dolor de cabeza que combina la ejecución de pruebas y comandos de shell.
Sin embargo, nosotros (en Mediafe) hemos encontrado una solución que puede funcionar para usted en un dispositivo normal sin raíz. Todo lo que necesitas hacer es agregar una anotación. Todo lo demás se hace ejecutando el simple bash script.
Simplemente agregue la anotación @ClearData
ANTES DE CUALQUIERA de sus pruebas y tada, el comando de borrado de ADB se ejecutará antes de la ejecución de la prueba.
Este es un ejemplo de tal ensayo:
@Test
@ClearData
public void someTest() {
// your test
}
La idea es la siguiente
- Leer todas las pruebas mediante el uso de plan de ejecución
adb shell am instrument -e log true
- Construir analizando la salida de (1)
- Ejecute el plan de ejecución línea por línea
Usando la misma idea son todas las opciones puede soportar fácilmente:
- datos claros
- barra de notificaciones Claro
- Parameterize
- Filtrar y correr por las etiquetas
Use solo anotaciones. De esta manera:
@Test
@ClearData
@Tags(tags = {"sanity", "medium"})
@Parameterized.Repeat(count = 3)
public void myTest() throws Exception {
String param = params[index];
// ...
}
Bono! Para cada fallaron la prueba:
- Logcat Collect + StackTrace
vídeo
- Record (mp4)
- volcado DB (sqlite)
- preferencias por defecto volcado compartidos (XML)
- Recopilación de archivos dumpsys como: batería, netstats y otros.
En general, es fácil agregar más opciones, ya que las pruebas se ejecutan una por una desde el script bash en lugar de desde la tarea gradle.
El post completo el blog: https://medium.com/medisafe-tech-blog/running-android-ui-tests-53e85e5c8da8
El código fuente con ejemplos: https://github.com/medisafe/run-android-tests
la esperanza que esto responda a 6 años que se trate;)
Esto sería tan grande. Al depurar problemas con la base de datos, tengo que navegar mucho hacia la opción Borrar datos y realmente rompe mi flujo. –
¿Es factible usar la herramienta adb para borrar los datos entre lanzamientos de aplicaciones?adb -w – smith324
Desafortunadamente, esta opción no está disponible (la ayuda de adb está desactualizada). – user597603