Ir al contenido principal
Versión: 5.9.x

Pruebas condicionales con anotaciones

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

Si deseamos deshabilitar completamente un Spec y todas sus pruebas incluidas, podemos hacerlo mediante anotaciones.

Una ventaja de este enfoque, en lugar de deshabilitar cada prueba individualmente, es que el Spec no se instanciará. Si un Spec tiene operaciones costosas de configuración/desmontaje de recursos, este método permite evitar ese tiempo.

nota

Estas anotaciones solo están disponibles para el objetivo JVM.

@Ignored

Si simplemente queremos deshabilitar un Spec completamente, podemos usar la anotación @Ignored.

@Ignored
class IgnoredSpec : FunSpec() {
init {
error("boom") // spec will not be created so this error will not happen
}
}

@EnabledIf

Si queremos deshabilitar un Spec dependiendo de la ejecución de una función, podemos usar @EnabledIf.

Esta anotación acepta una clase que implemente EnabledCondition, la cual se instancia e invoca para determinar si un Spec está habilitado. Las implementaciones deben tener un constructor sin argumentos.

Por ejemplo, podríamos querer ejecutar solo pruebas que contengan "Linux" en su nombre cuando se ejecuten en una máquina Linux.

class LinuxOnlyCondition : EnabledCondition {
override fun enabled(kclass: KClass<out Spec>): Boolean = when {
kclass.simpleName?.contains("Linux") == true -> IS_OS_LINUX
else -> true // non Linux tests always run
}
}

Entonces podemos aplicar esta condición a uno o más Specs:

@EnabledIf(LinuxOnlyCondition::class)
class MyLinuxTest1 : FunSpec() {
// tests here
}

@EnabledIf(LinuxOnlyCondition::class)
class MyLinuxTest2 : DescribeSpec() {
// tests here
}

@EnabledIf(LinuxOnlyCondition::class)
class MyWindowsTests : DescribeSpec() {
// tests here
}