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.