XCTest para Swift: guía completa con ejemplos prácticos
1. ¿Qué es XCTest y para qué sirve?
XCTest es el framework estándar de Apple para realizar pruebas unitarias (unit testing) y pruebas de interfaz de usuario (UI testing) en aplicaciones iOS, macOS, watchOS y tvOS. Viene integrado directamente en Xcode y es la herramienta principal para verificar que tu código en Swift y Objective-C funcione correctamente. XCTest ofrece un conjunto de APIs potentes y flexibles para escribir, organizar y ejecutar tests, desde simples comprobaciones de funciones individuales hasta complejas pruebas de integración y de interfaz de usuario.
¿Por qué necesitas XCTest? En el desarrollo de software moderno, las pruebas no son un lujo, sino una necesidad. XCTest te permite automatizar la verificación de tu código, lo cual es fundamental para mantener la calidad de tu aplicación a largo plazo. Con él puedes:
- Detectar regresiones: Después de modificar el código, ejecuta los tests rápidamente para asegurarte de que las nuevas funcionalidades no rompen lo que ya funcionaba.
- Documentar tu código: Los tests bien escritos actúan como documentación viva, mostrando exactamente cómo debe comportarse cada parte del sistema.
- Mejorar la arquitectura: Buscar que tu código sea fácil de probar te lleva a una arquitectura más limpia, modular y con bajo acoplamiento.
- Acelerar el desarrollo: En lugar de ejecutar la aplicación manualmente una y otra vez, puedes lanzar toda tu suite de tests con un solo clic.
XCTest está integrado con Xcode en todos los niveles: desde la creación de targets de prueba (test targets) hasta la visualización de resultados en el Test Navigator. Soporta ejecución paralela de tests, medición de rendimiento (performance testing) y pruebas asíncronas, lo que lo convierte en una solución completa para proyectos de cualquier tamaño.
2. Instalación y configuración
XCTest no se instala a través de gestores de paquetes como pip o npm. Es parte del ecosistema de Apple y viene incluido con Xcode. No necesitas ejecutar ningún comando adicional para usarlo.
Para empezar a escribir tests, sigue estos pasos en Xcode:
- Abre tu proyecto.
- En el menú, selecciona File → New → Target.
- En la ventana que aparece, elige la pestaña Test y luego selecciona Unit Testing Bundle (o UI Testing Bundle para tests de interfaz de usuario).
- Haz clic en Next, asigna un nombre al target (por ejemplo, "TuAppTests") y pulsa Finish.
Xcode creará automáticamente un archivo de plantilla donde podrás añadir tus tests. No es necesario importar XCTest en tu código, ya que se enlaza automáticamente al target de prueba.
Para proyectos que usan Swift Package Manager (SPM), XCTest también está disponible sin pasos adicionales. Al crear un paquete con el comando swift package init --type executable o --type library, SPM genera automáticamente el directorio Tests con los archivos necesarios.
3. Inicio rápido: ejemplo mínimo funcional
Veamos un ejemplo sencillo. Supongamos que tenemos una estructura Calculator que queremos probar:
// Archivo: Sources/Calculator.swift
struct Calculator {
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
func subtract(_ a: Int, _ b: Int) -> Int {
return a - b
}
}
Ahora creamos el archivo de prueba (Xcode lo hará automáticamente si seguiste las instrucciones anteriores):
// Archivo: Tests/MyProjectTests/CalculatorTests.swift
import XCTest
@testable import MyProject // Reemplaza MyProject con el nombre de tu módulo
final class CalculatorTests: XCTestCase {
func testAddition() {
// 1. Arrange (Preparación)