Reintento de prueba automático

Una prueba puede fallar por cualquier motivo y, a veces, es suficiente con volver a ejecutarla para que vuelva a aprobarse (debido a inconsistencias, como problemas en la infraestructura subyacente). Puedes configurar Tradefed para que realice el reintento automáticamente.

El objetivo principal del reintento automático es evitar volver a ejecutar todas las pruebas. Solo vuelve a ejecutar las pruebas que fallaron, lo que genera grandes ahorros en el tiempo de ejecución.

Tradefed también admite la ejecución de pruebas varias veces para detectar fallas a través de la función de iteraciones. En este caso, todas las pruebas se volverán a ejecutar y la prueba fallará si falla alguna de las iteraciones.

Habilita el reintento automático

La reintento automático se controla a través del objeto RetryDecision, que proporciona dos opciones para habilitar la función: max-testcase-run-count y retry-strategy.

max-testcase-run-count controla la cantidad de reintentos o iteraciones que se intentarán. Establece un límite superior para evitar que se vuelva a intentar para siempre. retry-strategy toma la decisión de cómo volver a intentarlo. Consulta las siguientes secciones para obtener más detalles.

Inhabilita el reintento automático

Usa la siguiente opción:

--retry-strategy NO_RETRY

Vuelve a intentar las fallas

Para volver a intentar 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, lo que ocurra primero.

Iteraciones

Para volver a ejecutar pruebas varias veces, puedes usar las siguientes opciones:

--retry-strategy ITERATIONS --max-testcase-run-count X

¿Cómo se ven los resultados?

De forma predeterminada, los generadores de informes de resultados recibirán los resultados agregados de todos los intentos.

Por ejemplo, un Fail y un Pass para RETRY_ANY_FAILURE darán como resultado un Pass agregado, ya que el reintento logró borrar la falla.

Los reporteros pueden recibir los resultados no agregados. Para ello, deben extender la interfaz ISupportGranularResults que declara 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 de forma manual cómo funciona la repetición. InstalledInstrumentationsTest es una implementación de ejemplo de esa interfaz.