Swift Testing (Parte 2 de 5)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

Organiza Pruebas con Swift Testing usando Suites y Tags

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

Gracias a Swift Testing y Xcode 16, podemos organizar las pruebas de diferentes maneras para facilitar su ejecución e identificación. Para esto, usamos Suites y Tags.

Suites

Usamos las Suites para agrupar tests relacionados. Esto lo logramos anotando nuestros tests con @Suite. Si un tipo contiene funciones anotadas con @Test, es reconocido implícitamente como una Suite de tests.

@Suite("Tests for Main Model")
struct ModelTests {
@Test func checkProcess() {
}
@Suite struct ModelWithMultipleItems {
@Test func makeNewItem() {
}
}
}

Creamos una Suite llamada “Tests for Main Model”, que a su vez contiene otra Suite. Como no indicamos un nombre personalizado, se llama “ModelWithMultipleItems”.

Así se visualiza esto en Xcode en el nuevo Test Navigator:

Nuevo Test Navigator

Características de una Suite

  • Puedes usar variables de instancia.
  • Podemos utilizar init y deinit para realizar tareas que cuando usamos XCTest colocaríamos, por ejemplo, en tearDown() y setUp().
  • Se inicializa una vez por cada @Test que contiene para evitar fallos relacionados a estado compartido.

Ejecutando pruebas unitarias de manera serial

Swift Testing ejecuta las pruebas en paralelo y de manera aleatoria. Si deseamos cambiar este comportamiento, debemos definir la Suite de la siguiente forma:

@Suite("Tests for Main Model", .serialized)

Aquí agregamos un trait llamado serialized, el cual garantiza que las pruebas se ejecuten una detrás de otra. Las Suites anidadas heredarán este comportamiento.

Organizando los tests usando tags

Una de las novedades que aporta Swift Testing es la capacidad de organizar las pruebas usando Tags.

// 1
extension Tag {
@Tag static var special: Self
}
// 2
@Test(
"Verify model contains multiple items"
.tags(.special)
)
func hasMultipleItems() async throws {
...
}

Qué pasa en este código:

  1. Swift Testing viene con una lista de tags predefinidos, pero podemos crear nuestros propios tags extendiendo Tag. Para esto, debemos usar el macro Tag y declarar nuestro nuevo tag de manera estática.
  2. Pasamos nuestro nuevo Tag al macro @Test utilizando tags(_:). Nótese que este espera una lista de tags, por lo que podríamos pasar más de uno si es necesario.

También podemos asignar un Tag a una Suite de tests, y todos los tests contenidos lo heredarán.

@Suite(.tags(.special))
struct MyTests {
@Test
...
}

Test Navigator ❤️ Tags

Test Navigator ofrece nuevas formas de visualizar los resultados y los casos de prueba. Podemos ver el listado de Tags y, haciendo clic en el icono de la derecha, ejecutar las pruebas que tengan el tag seleccionado.

Test Navigator y Tags

Además podemos filtrar usando los Tags para encontrar las pruebas de manera más rápida.

Test Navigator. Filtrar usando Tags

¿Por qué usar tags?

  • Proveen una forma fácil de agrupar tests relacionados.
  • Xcode nos permite ejecutar todos los tests con un tag específico.
  • Podemos filtrar los reportes de tests usando tags.
  • Pueden ser compartidos en múltiples proyectos.
  • Podemos excluir (o incluir) un grupo de tests que compartan un tag en los Test Plans.

Conclusión

Gracias a Swift Testing no solo podemos crear pruebas unitarias de forma más sencilla, sino que podemos trabajar de forma más organizada gracias a Suites y Tag.

Seguiremos publicando más contenido sobre Swift Testing en las próximas semanas y compartiéndolo en nuestro blog y redes. ¡Hasta la próxima!

Swift Testing (Parte 2 de 5)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

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.

© 2024 AsyncLearn