Una prueba puede fallar por cualquier motivo y, a veces, simplemente volver a ejecutar la prueba lo suficiente para que se apruebe nuevamente (debido a su fragilidad, como por ejemplo, debido a problemas en la infraestructura subyacente). Puedes configurar Tradefed para que realice el reintento automáticamente.
El objetivo principal de los reintentos automáticos es evitar que se vuelvan a ejecutar todas las pruebas. se vuelve a ejecutar solo las pruebas fallidas, lo que supone un gran ahorro en el tiempo de ejecución.
Tradefed también permite ejecutar pruebas varias veces para detectar fragilidad a través de la función de iteraciones. En este caso, todas las pruebas se volver a ejecutarlo y la prueba fallará si falla alguna de las iteraciones.
Habilitar reintento automático
El reintento automático se controla mediante el
Objeto RetryDecision
que brinda dos opciones para habilitar la función: max-testcase-run-count
y retry-strategy
.
max-testcase-run-count
controla la cantidad de iteraciones o reintentos que
se puede realizar cada una de estas tareas. Establece un límite superior para evitar que se vuelvan a intentar de forma permanente.
retry-strategy
impulsa la decisión de cómo reintentar. consulta las siguientes secciones
para obtener más información.
Inhabilitar el reintento automático
Usa la siguiente opción:
--retry-strategy NO_RETRY
Errores de reintento
Para reintentar las pruebas fallidas, usa las siguientes opciones:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
Esto volverá a intentar la falla hasta que finalice o hasta que se alcance la cantidad máxima de reintentos. se alcanza, lo que ocurra primero.
Iteraciones
Para volver a ejecutar pruebas durante varias veces, se pueden usar las siguientes opciones:
--retry-strategy ITERATIONS --max-testcase-run-count X
¿Cómo son los resultados?
De forma predeterminada, los generadores de informes de resultados recibirán los resultados agregados de todos los intentos.
Por ejemplo, Fail
y Pass
para RETRY_ANY_FAILURE
darán como resultado un
Se agregaron Pass
, ya que el reintento logró borrar la falla.
Es posible que los generadores de informes reciban los resultados no agregados. Para ello, sigue estos pasos: necesita extender el Interfaz de ISupportGranularResults que declare la compatibilidad con los resultados detallados (no agregados).
Detalles de implementación
Para habilitar los reintentos automáticos para volver a ejecutar fallas a nivel del caso de prueba, implementa ITestFilterReceiver.
Si no puedes implementar ITestFilterReceiver, puedes implementar IAutoRetriableTest para controlar manualmente el funcionamiento de la nueva ejecución. InstallInstrumentationsTest. es un ejemplo de implementación de esa interfaz.