Junior — Middle
Como pode reexecutar um teste instável para eliminar falhas falsas?
sobes.tech IA
Resposta da IA
Para relançar um teste instável (teste de flake) costuma-se usar o mecanismo de retries. Isto pode ser implementado ao nível do framework de testes ou CI/CD:
- No JUnit, usando regras ou anotações, por exemplo,
@Retry. - No TestNG, há suporte integrado para reexecuções através de
IRetryAnalyzer. - No CI/CD, pode-se configurar a reexecução de testes que falharam.
Exemplo no TestNG:
public class RetryAnalyzer implements IRetryAnalyzer {
private int count = 0;
private static final int maxRetry = 3;
@Override
public boolean retry(ITestResult result) {
if (count < maxRetry) {
count++;
return true;
}
return false;
}
}
@Test(retryAnalyzer = RetryAnalyzer.class)
public void unstableTest() {
// teste que pode falhar às vezes
}
Essa abordagem ajuda a diminuir o impacto de falhas falsas, mas é importante buscar e eliminar as causas de instabilidade em paralelo.