Decoroutinator
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.
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:
Elimina los detalles internos de implementación de las corrutinas de los seguimientos de pila
Hace que los seguimientos de pila sean más legibles y se centren en tu código
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.