Ir al contenido principal
Versión: 6.1

Configuración de Casos de Prueba

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

Cada prueba puede configurarse con distintos parámetros. Tras el nombre de la prueba, invoca la función config pasando los parámetros que desees establecer. Los parámetros disponibles son:

  • invocations - Número de veces que se ejecutará esta prueba. Útil para pruebas no deterministas que quieres ejecutar un número determinado de veces para ver si fallan eventualmente. La prueba solo tendrá éxito si todas las invocaciones son exitosas. Valor predeterminado: 1.

  • enabled - Si se establece en false, la prueba se deshabilita. Útil para ignorar temporalmente una prueba. También puedes usar este parámetro con expresiones booleanas para ejecutar pruebas solo bajo ciertas condiciones.

  • enabledIf - Función que ofrece la misma capacidad que enabled, pero se evalúa de forma diferida cuando la prueba está programada para ejecutarse.

  • timeout - Establece un tiempo máximo de ejecución para esta prueba. Si la prueba no finaliza en ese tiempo, falla. Útil para código no determinista que podría no terminar. El timeout es de tipo kotlin.Duration. Nota: si hay múltiples invocaciones, este timeout se aplica a la suma de todas ellas.

  • invocationTimeout - Establece un tiempo máximo para cada invocación de esta prueba. Si una invocación no finaliza en ese tiempo, falla. Útil para código no determinista. El timeout es de tipo kotlin.Duration. Nota: con múltiples invocaciones, este timeout se aplica por separado a cada una.

  • tags - Conjunto de etiquetas para agrupar pruebas (detalles abajo).

  • listeners - Registra listeners de prueba que solo se ejecutarán en esta prueba.

  • extensions - Registra extensiones que solo se aplicarán a esta prueba.

  • severity - Aplica un nivel de severidad usado por la extensión Allure y otras extensiones compatibles.

  • failfast - Si es true, el motor de pruebas dejará de ejecutar pruebas en este spec tras el primer fallo.

  • assertSoftly - Si es true, el motor ejecutará las aserciones en modo suave. Consulta aserciones suaves para más detalles.

  • blockingTest - Cuando es true, la ejecución usa un hilo dedicado para cada caso de prueba en este spec, permitiendo al motor interrumpir pruebas de forma segura mediante Thread.interrupt al superar timeouts. Es útil para probar código bloqueante con timeouts, ya que los timeouts de corrutinas son cooperativos por naturaleza.

  • retries - Número de reintentos si una prueba falla.

  • retryDelay - Tiempo entre reintentos. El delay es de tipo kotlin.Duration.

  • coroutineDebugProbes - Si es true, el motor habilita sondas de depuración para corrutinas. Consulta depuración de corrutinas) para más detalles.

Ejemplo de configuración en una prueba:

class MyTests : ShouldSpec() {
init {
should("return the length of the string").config(invocations = 10) {
"sammy".length shouldBe 5
"".length shouldBe 0
}
}
}
class MyTests : WordSpec() {
init {
"String.length" should {
"return the length of the string".config(timeout = 2.seconds) {
"sammy".length shouldBe 5
"".length shouldBe 0
}
}
}
}
class FunSpecTest : FunSpec() {
init {
test("FunSpec should support config syntax").config(tags = setOf(Database, Linux)) {
// ...
}
}
}

También puedes especificar un DefaultTestConfig que servirá como configuración base para todas las pruebas en un spec, a menos que se sobrescriba a nivel de prueba individual.

Establece el valor defaultTestConfig:

class FunSpecTest : FunSpec() {
init {

defaultTestConfig = DefaultTestConfig(enabled = true, invocations = 3)

test("this test would run 3 times") {
// ...
}

test("this test would run 1 time because it is overriden at the test level").config(invocations = 1) {
// ...
}
}
}