Al desarrollar para iOS, sueles posponer el momento de escribir código de pruebas. Y al abrir XCTest, no sabes por dónde empezar.
Voy directo al punto: tu primer test puede empezar con tres líneas, Given-When-Then. Preparar, ejecutar y verificar. Cuando interiorizas este orden, lo demás fluye.
Hoy veremos los fundamentos de XCTest y escribiremos juntos tu primer test con este patrón.
¿Qué es exactamente XCTest?
XCTest es el framework de pruebas que Apple incluye de forma predeterminada en Xcode. No necesitas instalar nada.
Al crear el proyecto, marca «Include Tests» y el destino de pruebas se creará automáticamente.
Veamos lo esencial.
- XCTestCase: la clase que contiene los tests. Empieza heredando de ella.
- Métodos que empiezan por test: si el nombre de una función empieza por test, Xcode la reconoce automáticamente como un test.
- Familia XCTAssert: funciones para verificar que los resultados son correctos.
Al principio, basta con conocer estas tres cosas.
Ejecutarlo es sencillo. Pulsa el botón con forma de diamante a la izquierda del método de prueba o usa Command + U para ejecutar todos los tests.
¿Qué es Given-When-Then?
La mayor dificultad para quien empieza con tests suele ser decidir en qué orden escribir el código.
Given-When-Then es el patrón que define precisamente ese orden. Solo tienes que pensar en tres bloques.
- Given (preparación): crea los valores y el estado necesarios para el test.
- When (ejecución): ejecuta una sola vez la acción que quieres verificar.
- Then (verificación): comprueba que el resultado coincide con lo esperado.
En lenguaje cotidiano: «Cuando hay 2 manzanas en el carrito (Given), al calcular el importe (When), deben salir 2000 wones (Then)».
Preparar, ejecutar y verificar. Eso es todo Given-When-Then.
Al separarlo así, cuando un test falla puedes identificar enseguida la etapa problemática: si la preparación era incorrecta o si falló el resultado de la ejecución.
Escribamos de verdad nuestro primer test
Usaremos una calculadora sencilla como ejemplo. Supongamos que existe una función add que suma dos números.
Este es el código que probaremos primero.
struct Calculator {
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
}
Ahora escribiremos el test siguiendo el orden Given-When-Then. Marcar las tres etapas con comentarios facilita mucho la lectura.
func testAddTwoNumbers() {
// Given: Preparar la calculadora y los valores de entrada
let calculator = Calculator()
// When: Ejecutar la suma
let result = calculator.add(2, 3)
// Then: Verificar el resultado
XCTAssertEqual(result, 5)
}
XCTAssertEqual compara si dos valores son iguales. Si result no es 5, el test falla en rojo; si es 5, pasa en verde.
Todavía recuerdo lo que sentí al ver encenderse la primera luz verde. No era gran cosa, pero me llenó de satisfacción.
Resumen de los XCTAssert más usados
Conocer solo XCTAssertEqual basta para empezar, pero elegir cada aserción según la situación hace el código más limpio. He reunido en una tabla las que uso con más frecuencia.
| Función | Cuándo usarla |
|---|---|
| XCTAssertEqual(a, b) | Si dos valores son iguales |
| XCTAssertTrue(condición) | Si la condición es verdadera |
| XCTAssertFalse(condición) | Si la condición es falsa |
| XCTAssertNil(valor) | Si el valor es nil |
| XCTAssertNotNil(valor) | Si el valor no es nil |
Si quieres dejar un mensaje cuando falle, añade una cadena como último argumento. Por ejemplo: XCTAssertEqual(result, 5, “El resultado de la suma es incorrecto”).
Preguntas frecuentes de principiantes
P. ¿Dónde se colocan los archivos de test? R. Colócalos en la carpeta Tests del proyecto. Para ejecutarlos, deben pertenecer al destino de pruebas.
P. ¿When tiene que ser una sola línea? R. No hace falta. Aun así, conviene ejecutar una sola acción por test. Si cada test verifica una sola cosa, la causa del fallo queda clara.
P. ¿Cómo se nombran las funciones de test? R. Empieza el nombre con test y haz explícito qué verificas, por ejemplo, testAddTwoNumbers.
Hoy hemos escrito nuestro primer test con los fundamentos de XCTest y el patrón Given-When-Then. Preparar, ejecutar y verificar: recuerda esos tres pasos.
No te obsesiones con crear el test perfecto. Empieza hoy encendiendo la luz verde con una sola función add. Ese pequeño éxito te llevará al siguiente test. ¡Ánimo!

