🧩 Exercícios: Testes Automatizados com Catch2 e GoogleTest
🧩 Exercícios Práticos: Testes Automatizados com Catch2 e GoogleTest
Spec Sistemas Com Cpp • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 16.1 — Caso de Teste Básico com REQUIRE e CHECK no Catch2
Contexto: Caso de Teste Básico com REQUIRE e CHECK no Catch2 no contexto de Testes Automatizados com Catch2 e GoogleTest.
Requisitos de Execução:
- Criar suite de testes validando funções matemáticas com asserções declarativas.
Resultado Esperado
Testes unitários executados e aprovados com Catch2.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_1_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados com Catch2 e GoogleTest
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <cassert>
int somar(int a, int b) { return a + b; }
int main() {
std::cout << "Executando suite de testes..." << std::endl;
assert(somar(2, 3) == 5);
assert(somar(-1, 1) == 0);
std::cout << "Todos os 2 testes unitarios foram aprovados com sucesso!" << std::endl;
return 0;
}
🔍 Nível 2: Prática
Problema 16.2 — Seções e Subcasos com SECTION e TEST_CASE
Contexto: Seções e Subcasos com SECTION e TEST_CASE no contexto de Testes Automatizados com Catch2 e GoogleTest.
Requisitos de Execução:
- Estruturar testes com contexto compartilhado e subseções isoladas.
Resultado Esperado
Seções de teste isoladas executadas sequencialmente.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_2_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados com Catch2 e GoogleTest
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <vector>
#include <cassert>
void testar_vector() {
std::vector<int> v;
// Section: Push
v.push_back(10);
assert(v.size() == 1);
// Section: Clear
v.clear();
assert(v.empty());
std::cout << "Seções de teste do vector aprovadas.\n";
}
int main() {
testar_vector();
return 0;
}
⚡ Nível 3: Integração
Problema 16.3 — Testes Parametrizados (Data-Driven Testing) com GENERATE
Contexto: Testes Parametrizados (Data-Driven Testing) com GENERATE no contexto de Testes Automatizados com Catch2 e GoogleTest.
Requisitos de Execução:
- Executar o mesmo caso de teste para uma matriz de entradas e saídas esperadas.
Resultado Esperado
Teste parametrizado aprovado para múltiplos cenários de borda.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_3_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados com Catch2 e GoogleTest
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <vector>
#include <cassert>
bool eh_par(int n) { return n % 2 == 0; }
int main() {
std::vector<std::pair<int, bool>> casos{{2, true}, {3, false}, {0, true}, {-2, true}};
for (const auto& [num, esperado] : casos) {
assert(eh_par(num) == esperado);
}
std::cout << "Matriz de casos de teste parametrizados aprovada!\n";
return 0;
}
🏆 Nível 4: Desafio Corporativo
Problema 16.4 — Benchmarking de Performance com Catch2 / Google Benchmark
Contexto: Benchmarking de Performance com Catch2 / Google Benchmark no contexto de Testes Automatizados com Catch2 e GoogleTest.
Requisitos de Execução:
- Medir tempo de execução e throughput de algoritmos críticos em nanossegundos.
Resultado Esperado
Benchmark corporativo executado com relatório de latência p99.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_4_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados com Catch2 e GoogleTest
🔑 Gabarito de Código & Solução Comentada
#include <iostream>
#include <chrono>
#include <vector>
#include <numeric>
int main() {
std::vector<int> dados(100000, 1);
auto t1 = std::chrono::high_resolution_clock::now();
long long soma = std::accumulate(dados.begin(), dados.end(), 0LL);
auto t2 = std::chrono::high_resolution_clock::now();
auto duracao = std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1).count();
std::cout << "Soma: " << soma << " | Tempo: " << duracao << " microssegundos\n";
return 0;
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |