Testes de Integração Swift com Docker: Guia Completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
Aqui está a tradução solicitada, mantendo todas as tags HTML e apenas traduzindo o conteúdo textual: ```html

Testes de Integração Swift com Docker: Guia Completo



Testes de integração são uma etapa fundamental no desenvolvimento de aplicações Swift de qualidade. Eles verificam como diferentes módulos, serviços e dependências externas interagem entre si. O Docker simplifica esse processo, fornecendo um ambiente isolado que pode ser facilmente reproduzido em qualquer máquina. Neste artigo, veremos como configurar testes de integração para um projeto Swift usando Docker, incluindo exemplos para iOS e macOS.



Por que usar Docker para testes de integração Swift?



Os testes tradicionais de aplicações Swift frequentemente sofrem com problemas de ambiente: diferentes versões de bancos de dados, servidores e bibliotecas. O Docker resolve esses problemas:



  • Isolamento: cada teste é executado em um contêiner limpo, eliminando a influência de outros processos.
  • Reprodutibilidade: o mesmo ambiente localmente, no servidor de CI e para outros desenvolvedores.
  • Implantação rápida: contêineres são iniciados em segundos, não em minutos.
  • Escalabilidade: é fácil executar testes paralelos com diferentes versões de dependências.


O Docker é especialmente útil para testar interações de rede, bancos de dados (por exemplo, PostgreSQL ou Redis) e arquiteturas de microsserviços.



Configuração do ambiente Docker para Swift



Para começar, vamos criar um projeto Swift simples e configurar o Docker. Suponha que temos uma aplicação que funciona com um banco de dados PostgreSQL.



1. Criação do projeto Swift



Crie um novo projeto usando o Swift Package Manager:



mkdir SwiftIntegrationTestcd SwiftIntegrationTestswift package init --type executable


Adicione a dependência para trabalhar com PostgreSQL. Abra o arquivo Package.swift e adicione:



// 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



Crie um arquivo Dockerfile na raiz do projeto:



FROM swift:5.9-focal

WORKDIR /app

# Copia os arquivos do projetoCOPY Package.swift .COPY Sources/ ./Sources/COPY Tests/ ./Tests/

# Compila o projeto (sem testes, para acelerar)RUN swift build -c release

# Comando para executar os testesCMD ["swift", "test", "--enable-test-discovery"]


3. Docker Compose para dependências



Crie um arquivo docker-compose.yml para executar os testes com 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


Escrevendo testes de integração em Swift



Agora vamos escrever um teste que verifica a conexão com o banco de dados e a execução de uma consulta.



1. Classe para trabalhar com o banco de dados



Crie o arquivo Sources/SwiftIntegrationTest/DatabaseService.swift:




                
                

Blogs

Book Recommendations