Swift Testing #2: Agrupando pruebas con @Suite

Published: (December 4, 2025 at 05:10 PM EST)
3 min read
Source: Dev.to

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

  • XCTAssert requiere vivir dentro de un XCTestCase para funcionar; no basta con mover el código a Swift Testing.
  • @Suite permite 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.

Bibliografía

  • Video “Mastering Swift Testing: Creating Subgroups of Tests with @suite” (Swift Testing), ver aquí.
  • Lista de reproducción “Swift Testing” (Swift and Tips), ver aquí.
  • Documentación oficial de Swift Testing, ver aquí.
Back to Blog

Related posts

Read more »