Tiempos de espera en pruebas
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
}
})
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.
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.timeoutestablece el tiempo de espera combinado de pruebakotest.framework.invocation.timeoutestablece los tiempos de espera por invocación.