Ir al contenido principal
Versión: 6.2 🚧

Tiempos de espera en pruebas

[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Kotest admite dos tipos de tiempos de espera en pruebas. El primero es el tiempo total para todas las invocaciones de una prueba, denominado simplemente timeout. El segundo corresponde a cada ejecución individual de una prueba y se llama invocation timeout.

Tiempo de espera de prueba

Para configurar un tiempo de espera de prueba, usamos la configuración de prueba:

class TimeoutTest : FunSpec({
test("this test will timeout quickly!").config(timeout = 100.milliseconds) {
// test here
}
})

Alternativamente, podemos aplicar un tiempo de espera para todas las pruebas en un archivo de especificaciones:

class TimeoutTest : FunSpec({

timeout = 100.milliseconds

test("this test will timeout quickly!") {
// test here
}

test("so will this one!") {
// test here
}
})
nota

El tiempo de ejecución de una prueba incluye el tiempo de las pruebas anidadas, así que tenlo en cuenta al configurar los tiempos de espera.

Tiempo de espera por invocación

Kotest puede configurarse para invocar una prueba múltiples veces. Por ejemplo:

class TimeoutTest : DescribeSpec({

describe("my test context") {
it("run me three times").config(invocations = 3) {
// this test will be invoked three times
}
}

})

Podemos aplicar un tiempo de espera por invocación usando la propiedad invocationTimeout.

class TimeoutTest : DescribeSpec({

describe("my test context") {
it("run me three times").config(invocations = 3, invocationTimeout = 60.milliseconds) {
// this test will be invoked three times and each has a timeout of 60 milliseconds
}
}

})

En el ejemplo anterior, cada invocación debe completarse en 60 milisegundos o menos. Podemos combinar esto con un tiempo de espera general de prueba:

class TimeoutTest : DescribeSpec({

describe("my test context") {
it("run me three times").config(timeout = 100.milliseconds, invocations = 3, invocationTimeout = 60.milliseconds) {
// this test will be invoked three times
}
}

})

Aquí queremos que las tres pruebas se completen en 100 milisegundos o menos, pero permitimos que cualquier invocación individual dure hasta 60 milisegundos.

Podemos aplicar tiempos de espera por invocación a nivel de especificaciones, igual que con los tiempos de espera de prueba:

class TimeoutTest : FunSpec({

invocationTimeout = 25.milliseconds

test("foo") {
// test here
}

test("bar") {
// test here
}
})

Configuración para todo el proyecto

Podemos aplicar tiempos de espera de prueba y/o por invocación para todas las pruebas en un módulo usando la configuración de proyecto.

object ProjectConfig : AbstractProjectConfig {
override val timeout = 100.milliseconds
override val invocationTimeout = 33.milliseconds
}

Estos valores se aplicarán a menos que se sobrescriban a nivel de especificaciones o de prueba individual.

consejo

Puedes establecer un tiempo de espera general para todo el proyecto y luego sobrescribirlo por especificación o por prueba.

Propiedades del sistema

Ambos tiempos de espera (de prueba y por invocación) pueden configurarse mediante propiedades del sistema, con valores en milisegundos.

  • kotest.framework.timeout establece el tiempo de espera combinado de prueba

  • kotest.framework.invocation.timeout establece los tiempos de espera por invocación.