Pular para conteúdo

Exercícios: Aula 12 - Testes e Documentação 🧪

🟢 Básico

  1. Macro de Asserção: Qual a diferença entre assert!, assert_eq! e assert_ne!? Dê um exemplo de uso para cada um.
  2. Comentários Doc: Crie uma função simples e adicione comentários de documentação usando ///. O que acontece quando você roda cargo doc --open?

🟡 Intermediário

  1. Teste Unitário: Crie uma função que valide se um e-mail é válido (verifique se contém "@"). Escreva pelo menos dois testes unitários dentro do mesmo arquivo: um para um caso de sucesso e outro para uma falha.
  2. Atributo Should Panic: Pesquise sobre o atributo #[should_panic] e escreva um teste que passe apenas se a função testada causar um panic!.

🔴 Desafio

  1. TDD (Test Driven Development): Sem escrever a implementação primeiro, crie os testes para uma função parske_kelvin_to_celsius(k: f64) -> Result<f64, String>. O teste deve validar que:
    • O cálculo está correto.
    • Se a temperatura for menor que 0 absoluto (-273.15 C), deve retornar um Err. Depois, implemente a função até que todos os testes passem.

📚 Gabarito e Soluções Comentadas

Gabarito Explicado ### Questão 1: Macro de Asserção **Resposta Comentada:** - **Fundamentação:** No contexto de **Testes e Documentação**, o conceito abordado (Macro de Asserção) é essencial para assegurar que os requisitos do sistema sejam estruturados de forma padronizada e escalável. - **Justificativa Técnica:** A abordagem recomendada prioriza baixo acoplamento, alta coesão e facilidade de manutenção em ambientes de produção, evitando retrabalho e inconsistências operacionais. ### Questão 2: Comentários Doc **Resolução e Implementação:**
// Estrutura de implementação recomendada para Comentários Doc
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Testes e Documentação**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 3: Teste Unitário **Resolução e Implementação:**
// Estrutura de implementação recomendada para Teste Unitário
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Testes e Documentação**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 4: Atributo Should Panic **Resolução e Implementação:**
// Estrutura de implementação recomendada para Atributo Should Panic
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Testes e Documentação**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda. ### Questão 5: TDD (Test Driven Development) **Resolução e Implementação:**
// Estrutura de implementação recomendada para TDD (Test Driven Development)
// Validação de regras de negócio e retorno consistente
- **Explicação:** A solução atende diretamente aos requisitos de **Testes e Documentação**, garantindo tipagem consistente, legibilidade e tratamento de casos de borda.