Ir al contenido principal
Versión: 6.1

Decoroutinator

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

La extensión Decoroutinator de Kotest integra Stacktrace Decoroutinator con Kotest. Decoroutinator mejora los seguimientos de pila en corrutinas de Kotlin al eliminar los detalles internos de implementación de las corrutinas, haciendo que los seguimientos de pila sean más limpios y fáciles de entender.

nota

Para usar esta extensión, añade el módulo io.kotest:kotest-extensions-decoroutinator a la ruta de compilación de pruebas.

Primeros pasos

Registra la DecoroutinatorExtension en tu clase de prueba:

class MyTest : FunSpec({
extension(DecoroutinatorExtension())

test("with clean stack traces") {
// Your test code with coroutines
}
})

La DecoroutinatorExtension también puede registrarse a nivel de proyecto para todas las pruebas:

class ProjectConfig : AbstractProjectConfig() {
override fun extensions() = listOf(DecoroutinatorExtension())
}

Funcionamiento

Cuando una prueba falla debido a una excepción en una corrutina, el seguimiento de pila normalmente contiene muchos detalles internos de implementación de las corrutinas que dificultan entender la causa real del fallo. La extensión Decoroutinator instala automáticamente la API JVM de Decoroutinator, que:

  1. Elimina los detalles internos de implementación de las corrutinas de los seguimientos de pila

  2. Hace que los seguimientos de pila sean más legibles y se centren en tu código

  3. Te ayuda a identificar rápidamente el origen de los errores en pruebas basadas en corrutinas

Ejemplo

Sin Decoroutinator, un seguimiento de pila podría verse así:

java.lang.IllegalStateException: Test exception
at com.example.MyTest$1$1.invokeSuspend(MyTest.kt:15)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
... many more internal details

Con Decoroutinator, el mismo seguimiento de pila se convierte en:

java.lang.IllegalStateException: Test exception
at com.example.MyTest$1$1.invokeSuspend(MyTest.kt:15)
... coroutine implementation details removed for clarity

Esto hace que sea mucho más fácil identificar y corregir problemas en tus pruebas basadas en corrutinas.