Pruebas condicionales con Gradle
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í.
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.specs | kotest_filter_specs | Spec (class) names |
kotest.filter.tests | kotest_filter_tests | Test names |
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:
systemProperty("kotest.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
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):
systemProperty("kotest.filter.specs", "com.somepackage.*")
systemProperty("kotest.filter.tests", "*Foo*")
Este ejemplo ejecutaría solo los tests que comiencen con Foo en cualquier paquete:
systemProperty("kotest.filter.tests", "Foo*")
Pasar propiedades del sistema a la tarea principal de Gradle normalmente no funciona con pruebas.
Gradle bifurca otra JVM para el ejecutor de pruebas y no pasa las propiedades del sistema.
Por lo tanto, debes usar la sintaxis systemProperty(...) en la tarea de test del archivo build.gradle.