Ir al contenido principal
Versión: 5.2.x

Pruebas de Bloqueo

[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 →

Al especificar tiempos de espera en pruebas, Kotest utiliza las funciones de corrutinas withTimeout proporcionadas por la biblioteca de corrutinas de Kotlin. Estos tiempos de espera son de naturaleza cooperativa, y se detectan cuando una corrutina se suspende, reanuda o llama a yield.

Sin embargo, al ejecutar código bloqueante, el hilo quedará bloqueado y el enfoque cooperativo no funcionará. En este escenario, debemos recurrir a interrumpir el hilo usando Thread.interrupt o similar. Para que esta interrupción funcione de forma segura, debemos ejecutar la prueba en un hilo dedicado.

Por tanto, corresponde al usuario indicar a Kotest que desea ejecutar una prueba concreta en un hilo dedicado que pueda usarse de forma segura para interrupción. Esto se hace activando la opción blockingTest en la configuración de la prueba.

Por ejemplo:

class MyBlockingTest : FunSpec() {
init {

test("interrupt me!").config(blockingTest = true, timeout = 10.seconds) {
Thread.sleep(100000000)
}

test("uses suspension").config(timeout = 10.seconds) {
delay(100000000)
}
}
}

En el ejemplo anterior, la primera prueba requiere la opción blockingTest porque utiliza una operación bloqueante de hilo. La segunda prueba no la necesita porque usa una operación suspendible.

nota

Esta característica solo está disponible en JVM.