Quick/Nimble para Swift: guia completo com exemplos

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

O que é Quick/Nimble e para que servem?

\n\n

Quick e Nimble são duas bibliotecas complementares para a linguagem Swift, projetadas para escrever testes no estilo Behavior-Driven Development (BDD). BDD é uma metodologia de desenvolvimento que foca no comportamento da aplicação do ponto de vista do usuário, e não nos detalhes técnicos de implementação. Em vez de afirmações secas como XCTAssertEqual(a, b), você descreve o que deve acontecer: "quando o usuário pressiona o botão, a aplicação deve mostrar uma saudação".

\n\n

Quick é um framework para descrever cenários de teste. Ele fornece um DSL (Domain-Specific Language) que permite estruturar os testes em uma hierarquia: describe (descrição do contexto), context (especificação das condições) e it (teste específico). Isso torna os testes legíveis e compreensíveis até mesmo para membros não técnicos da equipe (gerentes, analistas).

\n\n

Nimble é uma biblioteca para escrever matchers (assertions). Em vez dos padrões XCTAssert, você usa construções expressivas: expect(value).to(equal(expected)), expect(array).to(contain(element)). Nimble fornece dezenas de matchers embutidos e permite criar facilmente os seus próprios.

\n\n

Para que serve isso?

\n
    \n
  • Legibilidade: Testes em BDD parecem uma especificação. Você pode mostrá-los ao cliente e garantir que os requisitos foram entendidos corretamente.
  • \n
  • Estruturação: A hierarquia describe/context/it ajuda a organizar os testes logicamente, evitando "código espaguete".
  • \n
  • Matchers expressivos: Nimble torna as afirmações mais visuais e informativas. Erros nos testes ficam claros imediatamente.
  • \n
  • Facilidade de depuração: Quando um teste falha, você vê não apenas "esperado 5, obtido 3", mas o contexto completo: "Quando o usuário insere uma senha inválida, o sistema deve mostrar um erro".
  • \n
\n\n

Instalação do Quick/Nimble

\n\n

Quick e Nimble são instalados via CocoaPods ou Swift Package Manager (SPM). Vamos abordar ambos os métodos.

\n\n

Instalação via CocoaPods

\n

Se você ainda não usa CocoaPods, instale-o:

\n
sudo gem install cocoapods
\n

Na raiz do seu projeto, crie um arquivo Podfile e adicione:

\n
target 'YourAppName' do\n  # Dependências normais (se houver)\n  use_frameworks!\n\n  target 'YourAppNameTests' do\n    inherit! :search_paths\n    pod 'Quick'\n    pod 'Nimble'\n  end\nend
\n

Em seguida, execute:

\n
pod install
\n

Depois disso, abra o arquivo .xcworkspace.

\n\n

Instalação via Swift Package Manager (SPM)

\n

No Xcode: File → Add Packages... e insira a URL do repositório:

\n
https://github.com/Quick/Quick.git\nhttps://github.com/Quick/Nimble.git
\n

Selecione a versão estável mais recente e adicione os pacotes ao seu alvo de teste (YourAppNameTests).

\n\n

Início rápido: primeiro teste

\n

Vamos criar uma classe simples Calculator e testá-la.

\n\n

Classe para testar

\n
// Calculator.swift\nimport Foundation\n\nclass Calculator {\n    func add(_ a: Int, _ b: Int) -> Int {\n        return a + b\n    }\n\n    func subtract(_ a: Int, _ b: Int) -> Int {\n        return a - b\n    }\n\n    func multiply(_ a: Int, _ b: Int) -> Int {\n        return a * b\n    }\n}
\n\n

Teste usando Quick e Nimble

\n
// CalculatorSpec.swift\nimport Quick\nimport Nimble\n@testable import YourAppName // Substitua pelo nome do seu aplicativo\n\nclass CalculatorSpec: QuickSpec {\n    override func spec() {\n        describe("Calculator") {\n            var calculator: Calc                    

Recommendations