Ejemplos de Extensiones
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Esta página contiene algunos ejemplos sencillos de cómo escribir extensiones.
System Out Listener
Un ejemplo real de extensión es NoSystemOutListener, incluido en Kotest.
Esta extensión lanza un error si se escribe cualquier salida en la salida estándar.
class MyTestSpec : DescribeSpec({
extensions(NoSystemOutListener)
describe("All these tests should not write to standard out") {
it("silence in the court") {
println("boom") // failure
}
}
})
Timer Listener
Otro ejemplo sería si quisiéramos registrar el tiempo que tarda cada caso de prueba.
Podemos hacerlo usando las funciones beforeTest y afterTest de la siguiente manera:
object TimerListener : BeforeTestListener, AfterTestListener {
var started = 0L
override fun beforeTest(testCase: TestCase): Unit {
started = System.currentTimeMillis()
}
override fun afterTest(testCase: TestCase, result: TestResult): Unit {
println("Duration of ${testCase.descriptor} = " + (System.currentTimeMillis() - started))
}
}
Entonces podemos registrarlo en un único spec de la siguiente manera:
class MyTestClass : FunSpec({
extensions(TimerListener)
// tests here
})
O podríamos registrarlo para todo el proyecto:
object MyConfig : AbstractProjectConfig() {
override fun extensions(): List<Extension> = listOf(TimerListener)
}