Swift Testing #2: Agrupando pruebas con @Suite
Source: Dev.to
Introducción
Una Suite es un grupo de pruebas.
Al crear una estructura que contiene pruebas marcadas con @Test, esta se marca automáticamente con una “S” dentro del reporte de pruebas, indicando que es una Suite implícita.
Se puede crear una Suite de forma explícita con la etiqueta @Suite; en el reporte aparecerá con el nombre que se le asigne.
Crear una Suite explícita
@Suite("GIVEN some common preconditions")
struct CommonPreconditionsTests {
@Test
func specificAction() throws {
// ...
}
}
Anidando Suites
Se pueden anidar Suites para describir mejor las pruebas con funcionalidades, escenarios y precondiciones comunes.
Una práctica útil es emplear la notación Gherkin de BDD, que define varios niveles y pasos:
- Feature: descripción a alto nivel de la funcionalidad que se va a probar.
- Scenario: caso de uso específico dentro del Feature.
- Given: estado inicial o precondiciones.
- When: acción o evento que dispara el escenario.
- Then: resultado esperado o post‑condiciones.
- And: paso sucesivo.
Ejemplo con Feature y Scenario
@Suite("FEATURE: Calculator")
struct CalculatorTests {
@Suite("SCENARIO: Add two numbers")
struct AddingTwoNumbers {
@Test("GIVEN: I have entered 50 in the calculator AND: I have entered 70 in the calculator WHEN: I press add THEN: the result should be 120 on the screen")
func regularCase() {
let x = 50
let y = 70
let result = x + y
let expected = 120
#expect(result == expected)
}
@Test("GIVEN: I have entered in the calculator AND: I have entered into the calculator WHEN: I press add THEN: the result should be on the Screen")
func generalization() {
let x = 60
let y = 70
let result = x + y
let expected = 130
#expect(result == expected)
}
}
}
Reporte de pruebas resultante
- FEATURE: Calculator
- SCENARIO: Add two numbers
- GIVEN: I have entered 50 in the calculator AND: I have entered 70 in the calculator WHEN: I press add THEN: the result should be 120 on the screen
- GIVEN: I have entered in the calculator AND: I have entered into the calculator WHEN: I press add THEN: the result should be on the Screen
Agrupando por precondiciones comunes
Si varias pruebas comparten precondiciones (GIVEN), pueden agruparse en otra Suite:
@Suite("FEATURE: Calculator")
struct CalculatorTests {
@Suite("SCENARIO: Subtracting two numbers")
struct SubtractingTwoNumbers {
@Suite("GIVEN common pre‑conditions")
struct CommonPreconditions {
@Test("WHEN: I press subtract once THEN: the result should be ...")
func case1() {
// ...
#expect(result == expected)
}
@Test("WHEN: I press subtract twice THEN: the result should be ...")
func case2() {
// ...
#expect(result == expected)
}
}
}
}
Reporte de pruebas resultante
- FEATURE: Calculator
- SCENARIO: Subtracting two numbers
- GIVEN: common pre‑conditions
- WHEN: I press subtract once THEN: the result should be ...
- WHEN: I press subtract twice THEN: the result should be ...
Observaciones
XCTAssertrequiere vivir dentro de unXCTestCasepara funcionar; no basta con mover el código a Swift Testing.@Suitepermite agrupar y anidar pruebas, mejorando la claridad del reporte.- Siempre que sea posible, use la notación Gherkin (Feature/Scenario) para describir mejor las pruebas.