XCTest — Pruebas en Swift (iOS/macOS)

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es XCTest y para qué sirve?

XCTest es un framework integrado de Apple para pruebas unitarias, funcionales y de rendimiento de aplicaciones en Swift (iOS, macOS, watchOS, tvOS). Es análogo a bibliotecas como pytest para Python o JUnit para Java, pero está completamente integrado en Xcode y Swift Package Manager. XCTest permite verificar automáticamente el correcto funcionamiento de funciones individuales, clases, componentes de UI y solicitudes de red, lo cual es fundamental para mantener la calidad del código durante el desarrollo de aplicaciones nativas.

¿Cómo instalar XCTest?

XCTest viene incluido con Xcode y no requiere instalación por separado. Para empezar, solo necesitas crear un nuevo proyecto en Xcode y agregar un target para pruebas (iOS Unit Testing Bundle o macOS Unit Testing Bundle). Si usas Swift Package Manager, simplemente agrega la dependencia import XCTest en tu archivo de prueba. Para la integración con CI/CD (por ejemplo, GitHub Actions), agrega el script: xcodebuild test -scheme YourScheme -destination 'platform=iOS Simulator,name=iPhone 14'.

Funciones principales de XCTest

  • Pruebas unitarias (Unit Tests) — verificación de métodos y clases individuales usando XCTAssert.
  • Pruebas de rendimiento — medición del tiempo de ejecución de bloques de código mediante measure.
  • Pruebas de UI — automatización de la interacción con la interfaz a través de XCUIApplication.
  • Pruebas asíncronas — trabajo con expectativas mediante XCTestExpectation.
  • Pruebas parametrizadas — ejecución de una misma prueba con diferentes datos de entrada (mediante bucles).

Ejemplo de código en Swift (iOS)

import XCTest

class CalculatorTests: XCTestCase { var calculator: Calculator!

override func setUp() { super.setUp() calculator = Calculator() }

override func tearDown() { calculator = nil super.tearDown() }

func testAddition() { let result = calculator.add(2, 3) XCTAssertEqual(result, 5, "Se esperaba 5, se obtuvo \\(result)") }

func testPerformanceExample() { measure { _ = calculator.add(1000, 2000) } }

func testAsyncNetwork() { let expectation = self.expectation(description: "Carga de datos") NetworkService.fetchData { data in XCTAssertNotNil(data) expectation.fulfill() } waitForExpectations(timeout: 5) }}

¿Cuándo usar XCTest?

XCTest es obligatorio para todos los proyectos comerciales de iOS/macOS, especialmente si trabajas en equipo o planeas publicar en la App Store. Ayuda a prevenir regresiones durante la refactorización, acelera las revisiones de código y automatiza la verificación de la UI. Para probar solicitudes de red y el trabajo con bases de datos, XCTest se combina con mocks (por ejemplo, OHHTTPStubs). Si escribes una biblioteca en Swift, XCTest es el estándar de facto, ya que es totalmente compatible con Xcode y Swift Package Index.

Recommendations