Ir al contenido principal
Versión: 5.2.x

Configuración

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

Configuración

Kotest ofrece la posibilidad de especificar opciones de configuración al ejecutar pruebas de propiedades. Esto se consigue pasando una instancia de PropTestConfig a los métodos de prueba.

Por ejemplo:

class PropertyExample: StringSpec({
"String size" {
forAll<String, String>(PropTestConfig(options here...)) { a,b ->
(a + b).length == a.length + b.length
}
}
})

Semilla

La opción de configuración más común es especificar la semilla para la instancia aleatoria. Esto resulta útil cuando se desea generar los mismos valores de forma consistente en cada ejecución de la prueba. Podría necesitarse tras detectar un fallo, para garantizar que ese conjunto específico de valores siga ejecutándose en el futuro como prueba de regresión.

consejo

Cuando falle una prueba de propiedades, Kotest mostrará la semilla utilizada. Puedes duplicar la prueba configurándola para usar esta semilla, creando así una prueba de regresión permanente para esos valores.

Por ejemplo:

class PropertyExample: StringSpec({
"String size" {
forAll<String, String>(PropTestConfig(seed = 127305235)) { a,b ->
(a + b).length == a.length + b.length
}
}
})

Fallos mínimos

Por defecto, Kotest no tolera ningún fallo. Si deseas ejecutar pruebas no deterministas múltiples veces y aceptar un pequeño número de fallos, puedes especificarlo en la configuración.

class PropertyExample: StringSpec({
"some flakey test" {
forAll<String, String>(PropTestConfig(maxFailure = 3)) { a,b ->
// max of 3 inputs can fail
}
}
})

PropTestListener

En ocasiones, durante las pruebas de propiedades, es necesario realizar tareas de configuración y limpieza en cada iteración. Para ello, puedes registrar un PropTestListener mediante PropTestConfig.

class PropertyExample: StringSpec({
"some property test which require setup and tear down in each iteration" {
forAll<String, String>(PropTestConfig(listeners = listOf(MyPropTestListener))) { a,b ->
// some assertion
}
}
})