En ocasiones queremos probar código cuya ejecución es muy demorada. Para limitar la ejecución de una prueba o Suite, se puede usar el trait timeLimit() que me permite poner un límite en minutos al tiempo de ejecución de una prueba.
En el siguiente ejemplo, aunque la prueba originalmente tarda 4 minutos en ejecutarse, el trait .timeLimit(.minutes(1)) la hace fallar cuando alcanza un minuto de ejecución.
@Test(.timeLimit(.minutes(1)))
func expensiveOperation() {
Thread.sleep(until: Date(timeIntervalSinceNow: 240.0))
#expect(1 + 1 == 2)
}
Aunque sería ideal tener un "timeout" más corto, actualmente el "trait" solo recibe una cantidad entera de minutos.
Observaciones
- Si una prueba es parametrizada, el tiempo límite se aplica a cada uno de los casos de prueba de forma individual. Si una prueba tiene más de un límite de tiempo asociado, la biblioteca de pruebas usa el límite más corto.
- Si se aplica el trait de timeLimit a una Suite de pruebas, se fija el tiempo límite a cada una de las pruebas dentro de la suite, o cada uno de los casos parametrizados de una prueba de la suite. Por ejemplo, si una suite contiene cinco pruebas y se aplica un tiempo límite de un minuto, entonces cada prueba puede correr por hasta un minuto.
¿Cómo tener un timeout más corto?
Se puede usar el código que construí para modernizar XCTestExpectation y que explico en este artículo.
Top comments (0)