Ir al contenido principal
Versión: 5.4.x

Pruebas condicionales con Gradle

[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 ofrece dos formas de filtrar pruebas desde la línea de comandos usando Gradle. La primera es mediante la bandera estándar --tests que soporta Gradle, y la segunda mediante una propiedad específica de Kotest.

Filtrado de pruebas con Gradle

Al ejecutar Kotest mediante el ejecutor JUnit Platform a través de Gradle, Kotest soporta la sintaxis estándar de Gradle para filtrado de pruebas. Puedes habilitar el filtrado en el script de compilación o mediante la opción --tests en la línea de comandos.

Por ejemplo, en el script de compilación:

tasks.test {
filter {
//include all tests from package
includeTestsMatching("com.somepackage.*")
}
}

O mediante la línea de comandos:

gradle test --tests 'com.sksamuel.somepackage*'

gradle test --tests '*IntegrationTest'

Consulta la documentación completa de Gradle aquí.

precaución

Debido a que el soporte de pruebas de Gradle se basa en clase.método, no podemos filtrar pruebas a nivel de test individual, solo a nivel de clase.

Filtrado específico de Kotest

Para evitar las limitaciones del soporte --tests de Gradle, Kotest ofrece sus propias banderas mediante propiedades del sistema o variables de entorno. Estas banderas soportan comodines con * y coinciden con tests o specs:

System property (JVM)Environment variable (JVM or Native)Scope
kotest.filter.specskotest_filter_specsSpec (class) names
kotest.filter.testskotest_filter_testsTest names
precaución

Las propiedades del sistema solo son compatibles al orientar a Kotlin/JVM. Las variables de entorno son compatibles para Kotlin/JVM y Kotlin/Native.

Este ejemplo ejecutaría todos los tests en el paquete com.somepackage (y sus subpaquetes) configurando la propiedad kotest.filter.specs:

gradle test -Dkotest.filter.specs='com.somepackage.*'

Este ejemplo haría lo mismo usando una variable de entorno, funcionando tanto para Kotlin/JVM como Kotlin/Native:

kotest_filter_specs='com.somepackage.*' gradle test

precaución

Tanto si usas propiedades del sistema como variables de entorno, es mejor encerrar el valor entre comillas simples en lugar de comillas dobles para evitar que el shell interprete los caracteres *.

Este ejemplo ejecutaría solo los tests que contengan Foo en el paquete com.somepackage (y sus subpaquetes):

gradle test -Dkotest.filter.specs='com.somepackage.*' -Dkotest.filter.tests='*Foo*'

Este ejemplo ejecutaría solo los tests que comiencen con Foo en cualquier paquete:

gradle test -Dkotest.filter.tests='Foo*'