Pruebas de integración Swift con Docker: guía completa

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 de integración de Swift con Docker: guía completa



Las pruebas de integración son una etapa clave en el desarrollo de aplicaciones Swift de calidad. Verifican cómo los diferentes módulos, servicios y dependencias externas interactúan entre sí. Docker simplifica este proceso al proporcionar un entorno aislado que se puede reproducir fácilmente en cualquier máquina. En este artículo, veremos cómo configurar las pruebas de integración de un proyecto Swift utilizando Docker, incluyendo ejemplos para iOS y macOS.



¿Por qué usar Docker para las pruebas de integración de Swift?



Las pruebas tradicionales de aplicaciones Swift a menudo sufren problemas de entorno: diferentes versiones de bases de datos, servidores, bibliotecas. Docker resuelve estos problemas:



  • Aislamiento: cada prueba se ejecuta en un contenedor limpio, lo que elimina la influencia de otros procesos.
  • Reproducibilidad: el mismo entorno localmente, en el servidor CI y en otros desarrolladores.
  • Despliegue rápido: los contenedores se inician en segundos, no en minutos.
  • Escalabilidad: es fácil ejecutar pruebas paralelas con diferentes versiones de dependencias.


Docker es especialmente útil para probar interacciones de red, bases de datos (por ejemplo, PostgreSQL o Redis) y arquitecturas de microservicios.



Configuración del entorno Docker para Swift



Para empezar, crearemos un proyecto Swift simple y configuraremos Docker. Supongamos que tenemos una aplicación que funciona con una base de datos PostgreSQL.



1. Creación del proyecto Swift



Cree un nuevo proyecto usando Swift Package Manager:



mkdir SwiftIntegrationTestcd SwiftIntegrationTestswift package init --type executable


Añadamos una dependencia para trabajar con PostgreSQL. Abra Package.swift y añada:



// swift-tools-version:5.9import PackageDescription

let package = Package( name: "SwiftIntegrationTest", dependencies: [ .package(url: "https://github.com/vapor/postgres-nio.git", from: "1.18.0") ], targets: [ .executableTarget( name: "SwiftIntegrationTest", dependencies: [ .product(name: "PostgresNIO", package: "postgres-nio") ]), .testTarget( name: "SwiftIntegrationTestTests", dependencies: ["SwiftIntegrationTest"]) ])


2. Dockerfile para Swift



Cree un archivo Dockerfile en la raíz del proyecto:



FROM swift:5.9-focal

WORKDIR /app

# Copiamos los archivos del proyectoCOPY Package.swift .COPY Sources/ ./Sources/COPY Tests/ ./Tests/

# Compilamos el proyecto (sin pruebas, para acelerar)RUN swift build -c release

# Comando para ejecutar las pruebasCMD ["swift", "test", "--enable-test-discovery"]


3. Docker Compose para dependencias



Cree docker-compose.yml para ejecutar las pruebas con PostgreSQL:



version: '3.8'

services: postgres: image: postgres:16 environment: POSTGRES_DB: testdb POSTGRES_USER: testuser POSTGRES_PASSWORD: testpass ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U testuser -d testdb"] interval: 5s timeout: 5s retries: 5

swift-tests: build: . depends_on: postgres: condition: service_healthy environment: DATABASE_HOST: postgres DATABASE_PORT: 5432 DATABASE_NAME: testdb DATABASE_USER: testuser DATABASE_PASSWORD: testpass


Escritura de pruebas de integración en Swift



Ahora escribamos una prueba que verifique la conexión a la base de datos y la ejecución de una consulta.



1. Clase para trabajar con la base de datos



Cree un archivo Sources/SwiftIntegrationTest/DatabaseService.swift:




                
                

Blogs

Book Recommendations