Ir al contenido principal
Versión: 5.2.x

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 diversos parámetros. Después del 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 deseas ejecutar múltiples veces para detectar fallos eventuales. La prueba solo tendrá éxito si todas las invocaciones son exitosas. Valor predeterminado: 1.

  • threads - Permite paralelizar las invocaciones de esta prueba definiendo el número de hilos. El valor debe ser menor o igual al de invocations. Si configuras invocations igual al número de hilos, cada invocación tendrá su propio hilo.

  • enabled - Si se establece en false, la prueba queda deshabilitada. Útil para ignorar pruebas temporalmente. También puedes usar expresiones booleanas para ejecutar pruebas bajo condiciones específicas.

  • enabledIf - Función equivalente a enabled que se evalúa de forma diferida cuando el caso de prueba está por ejecutarse.

  • timeout - Establece un tiempo máximo de ejecución para la prueba. Si la prueba no finaliza en ese tiempo, fallará. Útil para código no determinista que podría no terminar. Usa el tipo kotlin.Duration (ej: 2.seconds, 3.minutes).

  • 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.

Ejemplo de configuración en una prueba:

class MyTests : ShouldSpec() {
init {
should("return the length of the string").config(invocations = 10, threads = 2) {
"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 definir una configuración predeterminada (TestCaseConfig) para todos los casos de prueba de un Spec:

Sobrescribiendo la función defaultTestCaseConfig:

class MySpec : StringSpec() {

override fun defaultTestCaseConfig() = TestCaseConfig(invocations = 3)

init {
// your test cases ...
}
}

O mediante asignación al valor defaultTestConfig:

class FunSpecTest : FunSpec() {
init {

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

test("FunSpec should support Spec config syntax in init{} block") {
// ...
}
}
}