Capítulo 18: Testes Automatizados ❌🧬
Neste capítulo, vamos aprender o conceito de Testes Automatizados no C#. Para manter as coisas simples e sem precisar instalar pacotes extras, vamos criar nossos próprios testes manuais usando código, com o tema dos X-Men (Sala de Perigo)!
📖 Por que fazer Testes?
Testar o código garante que ele funciona como esperado e que não vai quebrar se mudarmos algo no futuro. É como o treinamento dos X-Men na Sala de Perigo: simula situações reais para ver se o herói está pronto!
📖 Exemplo Guiado: Testando o Poder de Ataque
Vamos criar uma função que calcula o dano e uma função de teste para verificar se o cálculo está correto.
- Crie o arquivo
combate_teste.csna pastasrc/:
using System;
// Função que queremos testar
int CalcularDano(int forca, int defesa) {
int dano = forca - defesa;
if (dano < 0) {
return 0;
}
return dano;
}
// Função de Teste
void TestarCalcularDano() {
Console.WriteLine("Iniciando Simulador da Sala de Perigo...");
int resultado = CalcularDano(50, 30);
int esperado = 20;
if (resultado == esperado) {
Console.WriteLine("✅ TESTE PASSOU: Calculo de dano correto!");
} else {
Console.WriteLine($"❌ TESTE FALHOU: Esperava {esperado}, mas veio {resultado}");
}
}
// Executando o teste
TestarCalcularDano();🕹️ Como Executar e Testar no VS Code
- Execute o projeto usando
dotnet run.
Resultado Esperado:
Iniciando Simulador da Sala de Perigo...
✅ TESTE PASSOU: Calculo de dano correto!📊 Ilustração Visual: O Ciclo de Testes
Veja como o teste funciona:
graph LR A[Código] -->|Executa| B{Simulador} B -->|Sucesso| C[PASS] B -->|Falha| D[FAIL]
🛠️ Prática Obrigatória 1: Testando Cura
Crie uma função Curar(int vidaAtual, int cura) que some a vida e a cura (o limite máximo de vida é 100). Depois, crie uma função de teste TestarCurar() para verificar se a cura funciona e se respeita o limite de 100! Chame a função de teste no final.
🔑 Gabarito de Código
Prática 1: cura_teste.cs
using System;
int Curar(int vidaAtual, int cura) {
int total = vidaAtual + cura;
if (total > 100) {
return 100;
}
return total;
}
void TestarCurar() {
int res = Curar(80, 30);
int esp = 100; // Não pode passar de 100!
if (res == esp) {
Console.WriteLine("✅ TESTE PASSOU: Sistema de cura ok!");
} else {
Console.WriteLine($"❌ TESTE FALHOU: Esperava {esp}, mas veio {res}");
}
}
TestarCurar();