Ir al contenido principal
Versión: 6.2 🚧

Pruebas condicionales con banderas de habilitació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 →

Kotest permite desactivar pruebas configurando una bandera en el test. Estas configuraciones son muy similares: enabled, enabledIf y enabledOrReasonIf.

Habilitado

Puedes desactivar un caso de prueba simplemente estableciendo el parámetro de configuración enabled en false. Si buscas un equivalente al @Ignore de JUnit, esta es tu opción.

"should do something".config(enabled = false) {
// test here
}

Puedes usar este mismo mecanismo para ejecutar pruebas solo bajo ciertas condiciones. Por ejemplo, podrías ejecutar ciertos tests solo en sistemas Linux usando SystemUtils.IS_OS_LINUX de Apache Commons Lang.

"should do something".config(enabled = IS_OS_LINUX) {
// test here
}

Habilitado si

Si necesitas usar una función que se evalúa cada vez que se invoca el test, puedes utilizar enabledIf. Esta función tiene la firma (TestCase) -> Boolean, por lo que tienes acceso al test en tiempo de ejecución al evaluar si una prueba debe habilitarse o deshabilitarse.

Por ejemplo, si quisiéramos desactivar todas las pruebas que comienzan con la palabra "peligro", pero solo cuando se ejecutan los viernes, podríamos hacer esto:

val disableDangerOnFridays: EnabledIf = { !(it.name.testName.startsWith("danger") && isFriday()) }

"danger Will Robinson".config(enabledIf = disableDangerOnFridays) {
// test here
}

"safe Will Robinson".config(enabledIf = disableDangerOnFridays) {
// test here
}

Habilitado o razón si

Existe una tercera variante llamada enabledOrReasonIf que permite devolver un motivo para la desactivación del test. Tiene la firma (TestCase) -> Enabled, donde Enabled es un tipo que puede contener una razón de omisión. Esta cadena de texto se incluye en los informes de pruebas.

Por ejemplo, podemos reescribir el caso anterior de 'peligro' así:

val disableDangerOnFridays: (TestCase) -> Enabled = {
if (it.name.testName.startsWith("danger") && isFriday())
Enabled.disabled("It's a friday, and we don't like danger!")
else
Enabled.enabled
}

"danger Will Robinson".config(enabledOrReasonIf = disableDangerOnFridays) {
// test here
}

"safe Will Robinson".config(enabledOrReasonIf = disableDangerOnFridays) {
// test here
}