Swift Testing (Parte 5 de 6)1

Introducción a Swift Testing

2

Organiza Pruebas con Swift Testing usando Suites y Tags

3

Evaluando pruebas con Swift Testing

4

Pruebas unitarias asíncronas con Swift Testing

5

Deshabilitando y Habilitando pruebas con Swift Testing

6

Cómo escribir pruebas parametrizadas con Swift Testing

Deshabilitando y Habilitando pruebas con Swift Testing

Es necesario utilizar Xcode 16 Beta o superior para trabajar con Swift Testing.

Cuando creamos una suite de pruebas, es inevitable que necesitemos deshabilitar algunas pruebas por múltiples razones. Ya sea por cambios en el SDK, dependencias de terceros que provocan fallos en la prueba, o por alguna razón relacionada con nuestro flujo de trabajo. Para esos casos, Swift Testing nos provee herramientas para desactivar, activar o “ignorar” los resultados de una prueba según corresponda.

Deshabilitar o habilitar pruebas unitarias

Para deshabilitar una prueba, podemos usar disabled(_:fileID:filePath:line:column:). En la macro @Test, pasamos un argumento donde podemos indicar la razón por la que fue deshabilitada. Veamos un ejemplo:

@Test("Verify model contains multiple items", .disabled("Disabled until bug is fixed"))
func checkItems() {
...
}

En este código, indicamos que la prueba unitaria checkItems está deshabilitada y agregamos un comentario explicando el porqué. Xcode nos mostrará este mensaje:

Mensaje indicando que la prueba ha sido deshabilitada

También podemos deshabilitar o habilitar pruebas en tiempo de ejecución usando enabled(if:_:sourceLocation:). Veamos un ejemplo:

@Test("Verify model contains multiple items", .enabled(if: MyService().enabled))
func checkItems() {
...
}

En este caso, MyService contiene una propiedad enabled. Cuando esta sea false, la prueba será omitida. Xcode nos mostrará el siguiente mensaje:

Mensaje indicando que la prueba ha sido omitida

Estas dos formas de indicar el estado de una prueba también pueden combinarse, por ejemplo:

@Test(
"Verify model contains multiple items",
.enabled(if: Service().enabled),
.disabled("Disabled until bug is fixed"),
.bug("https://jira.com", id: "123")
)

En este caso, también pasamos .bug("https://jira.com", id: "123", "Nice comment"). Esto nos permite indicar una URL y un id. Estos datos idealmente deberían estar relacionados con nuestra herramienta para reporte de errores.

Si seleccionamos la prueba en cuestión haciendo doble clic sobre la descripción en el reporte de resultados, en la parte superior derecha podremos ver un botón que nos llevará a la dirección web indicada.

Vista detalle de una prueba unitaria

With know issues

En ocasiones, tenemos pruebas unitarias que fallan por razones que no podemos resolver en el momento. Sin embargo, no podemos borrarlas porque constituyen una parte que queremos validar de nuestro código. Para lidiar con esto, tenemos varias opciones. Usar @Test(.disabled) para deshabilitarla por completo es una, como vimos anteriormente. Sin embargo, Swift Testing nos provee una mejor opción usando withKnownIssue. Veamos un ejemplo:

@Test func removeItemError() throws {
let model = Model()
withKnownIssue {
try model.removeAll()
}
}

Colocar el código try model.removeAll() dentro de withKnownIssue(_:isIntermittent:fileID:filePath:line:column:_:) nos permite ejecutar la prueba sabiendo que puede fallar y ver los errores de compilación generados en los resultados sin “fallar” la prueba unitaria.

Xcode nos mostrará este mensaje si el error ocurre y omitirá el resultado de la prueba:

Mensaje indicando que la prueba ha sido omitida

Sin embargo, si el error no ocurre indicará que la prueba ha fallado:

Mensaje indicando que la prueba ha fallado

Esto puede ser una forma de lidiar con los denominados “flaky tests”, pruebas que por razones no identificadas en el momento fallan de manera intermitente. Debemos tomar en cuenta que esto debe verse como una solución temporal.

Conclusión

Este es el quinto artículo de la serie sobre Swift Testing. Ahora ya sabemos cómo desactivar/activar pruebas de manera eficiente.

Swift Testing (Parte 5 de 6)1

Introducción a Swift Testing

2

Organiza Pruebas con Swift Testing usando Suites y Tags

3

Evaluando pruebas con Swift Testing

4

Pruebas unitarias asíncronas con Swift Testing

5

Deshabilitando y Habilitando pruebas con Swift Testing

6

Cómo escribir pruebas parametrizadas con Swift Testing

Comparte este artículo

Subscríbete a nuestro Newsletter

Mantente al día en el mundo de las aplicaciones móviles con nuestro blog especializado.

Artículos semanales

Todas las semanas artículos nuevos sobre el mundo de las aplicaciones móviles.

No spam

No te enviaremos spam, solo contenido de calidad. Puedes darte de baja cuando quieras.

Contenido de calidad

Nada de contenido generado de manera automática usando ChatGPT.

Recomendaciones

Tips indispensables sobre mejores prácticas y metodologías.

© 2025 AsyncLearn