Reintento automático de pruebas

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 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 admite 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

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 iteraciones o reintentos que se puede realizar cada una de estas tareas. Establece un límite superior para evitar que se vuelva a intentar para siempre. 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

Vuelve a intentar las fallas

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 se complete o hasta que se alcance la cantidad máxima de reintentos. se alcanza, 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 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 el reintento automático 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. InstalledInstrumentationsTest es una implementación de ejemplo de esa interfaz.