O que é Quick/Nimble e para que servem?
\n\nQuick 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".
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).
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.
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/itajuda 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
Instalação do Quick/Nimble
\n\nQuick e Nimble são instalados via CocoaPods ou Swift Package Manager (SPM). Vamos abordar ambos os métodos.
\n\nInstalação via CocoaPods
\nSe você ainda não usa CocoaPods, instale-o:
\nsudo gem install cocoapods\nNa raiz do seu projeto, crie um arquivo Podfile e adicione:
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\nEm seguida, execute:
\npod install\nDepois disso, abra o arquivo .xcworkspace.
Instalação via Swift Package Manager (SPM)
\nNo Xcode: File → Add Packages... e insira a URL do repositório:
https://github.com/Quick/Quick.git\nhttps://github.com/Quick/Nimble.git\nSelecione a versão estável mais recente e adicione os pacotes ao seu alvo de teste (YourAppNameTests).
Início rápido: primeiro teste
\nVamos criar uma classe simples Calculator e testá-la.
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\nTeste 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