Pruebas en Swift (iOS/macOS): frameworks y herramientas

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

Pruebas en Swift (iOS/macOS): frameworks y herramientas



El desarrollo de aplicaciones de calidad para las plataformas de Apple es imposible sin pruebas sistemáticas. En el ecosistema de Swift, se ha formado un potente conjunto de herramientas que cubre todos los niveles, desde pruebas unitarias hasta pruebas de UI y análisis estático. En este artículo, analizaremos los frameworks y prácticas clave que te ayudarán a aumentar la fiabilidad del código y acelerar el desarrollo.



1. XCTest — el fundamento de las pruebas

XCTest es el framework integrado de Apple, disponible en Xcode. Proporciona capacidades básicas para escribir pruebas unitarias, pruebas de UI y pruebas de rendimiento. XCTest está integrado con el Xcode Test Navigator y admite la ejecución tanto en simuladores como en dispositivos reales.

Ejemplo de una prueba unitaria simple para el modelo Calculator:

import XCTest@testable import MyApp

final class CalculatorTests: XCTestCase { var calculator: Calculator!

override func setUpWithError() throws { calculator = Calculator() }

override func tearDownWithError() throws { calculator = nil }

func testAddition() throws { let result = calculator.add(2, 3) XCTAssertEqual(result, 5, "La suma debe ser correcta") }

func testDivisionByZero() throws { XCTAssertThrowsError(try calculator.divide(10, 0)) { error in XCTAssertEqual(error as? CalculatorError, .divisionByZero) } }}

Capacidades clave de XCTest:

  • XCTAssert — conjunto de aserciones (igualdad, veracidad, lanzamiento de errores)
  • setUp/tearDown — ciclo de vida de la clase de prueba
  • measure — medición del rendimiento de bloques de código
  • Pruebas de UI — grabación y reproducción de interacciones con la interfaz


2. Quick y Nimble — estilo BDD

Quick es un framework para Behaviour-Driven Development (BDD) que permite describir pruebas en lenguaje natural. Nimble es una biblioteca de matchers que amplía las capacidades de las aserciones. Juntos hacen que las pruebas sean legibles para todo el equipo, incluidos gerentes y analistas.

Ejemplo de prueba usando Quick/Nimble:

import Quickimport Nimble@testable import MyApp

class LoginSpec: QuickSpec { override func spec() { describe("LoginViewController") { var viewController: LoginViewController!

beforeEach { viewController = LoginViewController() _ = viewController.view // Carga de la vista }

context("cuando se ingresan datos correctos") { it("debe llamar al método de autorización") { viewController.emailTextField.text = "user@example.com" viewController.passwordTextField.text = "password123" viewController.loginButtonTapped() expect(viewController.isAuthorized).to(beTrue()) } }

context("cuando la contraseña está vacía") { it("debe mostrar un error") { viewController.emailTextField.text = "user@example.com" viewController.passwordTextField.text = "" viewController.loginButtonTapped() expect(viewController.errorLabel.isHidden).to(beFalse()) } } } }}
  • describe/context/it — estructura jerárquica de especificaciones
  • beforeEach/afterEach — hooks para preparar el estado
  • expect(...).to(...) — verificaciones legibles con múltiples matchers


3. SnapshotTesting — pruebas visuales

La biblioteca SnapshotTesting de Point-Free permit

Recommendations