📊 Capítulo 16: Testes com Catch2 v3
Especialização em Sistemas com C++
🗺️ A Estrutura de BDD (Behavior-Driven Development) no Catch2
flowchart TD
SCENARIO["SCENARIO('Cálculo de Transação Financeira')"]
--> GIVEN["GIVEN('Uma conta bancária com saldo inicial de 500 reais')"]
GIVEN --> WHEN["WHEN('O usuário realiza um saque válido de 200 reais')"]
WHEN --> THEN["THEN('O saldo final da conta deve ser rigorosamente 300 reais')"]
THEN --> CHECK["REQUIRE(conta.saldo() == 300.0);\nCHECK(conta.extrato().size() == 1); ⚡"]
style SCENARIO fill:#ede7f6,stroke:#512da8,stroke-width:2px
style GIVEN fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style WHEN fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style THEN fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style CHECK fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
🎯 Slide 1: Catch2 v3: Rápido e Modular
- No Catch2 v3, a biblioteca foi dividida em componentes modulares compilados, acelerando drasticamente o tempo de build em comparação com a v2 antiga (header-only pesada).
🎯 Slide 2: REQUIRE vs CHECK
-
REQUIRE(condicao): Se a condição for falsa, o teste aborta imediatamente. CHECK(condicao): Se falhar, registra o erro no relatório, mas continua executando as asserções seguintes para diagnosticar outros campos!
🎯 Slide 3: Seções Isoladas com SECTION
TEST_CASE("Vetores dinâmicos") {
std::vector<int> v{1, 2, 3};
SECTION("Adicionar elemento") {
v.push_back(4);
REQUIRE(v.size() == 4);
}
SECTION("Limpar elementos") {
v.clear();
REQUIRE(v.empty());
}
// Cada SECTION roda com uma nova cópia limpa do estado inicial! 🛡️
}
🔗 Navegação do Capítulo 16
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim