🧪 Aula: Testes Unitários com Java

Professor: Ricardo
Data: 2026-03-02
Duração: 90 minutos
Nível: Intermediário


🎯 Visão Geral da Aula

Esta aula ensina testes unitários com JUnit 5 de forma prática e profissional. Os alunos sairão sabendo configurar, escrever e executar testes unitários em projetos Java reais.

🎓 Objetivos de Aprendizagem:

  • ✅ Compreender a importância dos testes para qualidade de software
  • ✅ Configurar e usar JUnit 5 em projetos Maven
  • ✅ Aplicar estrutura AAA (Arrange, Act, Assert)
  • ✅ Testar exceções e casos especiais
  • ✅ Executar e interpretar resultados de testes

📁 Estrutura da Aula

📚 Material Pedagógico

💻 Projeto Prático

  • projeto-pratico - Código Java funcional com testes
    • Classes: Calculadora, StringUtils
    • Testes: 55+ casos cobrindo diferentes cenários
    • Maven configurado com JUnit 5 e JaCoCo

🎨 Assets

  • images - Diagramas e recursos visuais

⏱️ Cronograma (90 minutos)

TempoBlocoAtividadeMétodo
0-25 min📚 FundamentosConceitos e motivaçãoExpositiva + discussão
25-60 min🔬 JUnit na PráticaSetup + live codingDemonstração + hands-on
60-70 min⏸️ IntervaloPausa-
70-85 min🚀 Testes AvançadosParametrização + exceçõesLive coding
85-90 min💎 ConsolidaçãoRecap + próximos passosSíntese

🎬 Como Usar Este Material

👨‍🏫 Para o Professor:

Preparação (antes da aula):

  1. Validar ambiente: Java 17+ e VS Code funcionando
  2. Testar projeto: mvn test no projeto-pratico
  3. Revisar slides: Ajustar timing conforme turma
  4. Preparar troubleshooting: Soluções para problemas comuns

Durante a aula:

  1. Seguir cronograma: Usar timer rigoroso
  2. Live coding: Mostrar erro → correção → sucesso
  3. Circular pela sala: Ajudar individualmente
  4. Adaptar ritmo: Observar sinais da turma

Dicas específicas:

  • 💡 Comece sempre mostrando teste falhando (Red do TDD)
  • 💡 Use exemplos concretos (bugs reais, não abstratos)
  • 💡 Pause em erros comuns para explicar debugging
  • 💡 Celebre testes verdes para reforço positivo

👨‍🎓 Para o Aluno:

Antes da aula:

  • Java 17+ instalado e funcionando
  • VS Code com Extension Pack for Java
  • Maven configurado no PATH
  • (Opcional) Ler material de apoio

Durante a aula:

  • Seguir live coding passo a passo
  • Testar comandos no próprio ambiente
  • Fazer perguntas sobre aplicação prática
  • Experimentar variações dos exemplos

Após a aula:

  • Completar exercícios práticos
  • Aplicar em projeto pessoal
  • Estudar material de apoio
  • Praticar TDD em novo código

🚀 Começando Rapidamente

Setup rápido (para teste):

# 1. Clone/baixe este projeto
cd aula-testes-unitarios-java/projeto-pratico
 
# 2. Teste a configuração
mvn clean test
 
# 3. Visualizar slides
# Abrir: material-pedagogico/02-slides-apresentacao.md
# com Marp extension no VS Code

Resultado esperado:

[INFO] Tests run: 55, Failures: 0, Errors: 0, Skipped: 0
[INFO] BUILD SUCCESS

🎯 Resultados de Aprendizagem

Ao final da aula, o aluno será capaz de:

Técnico:

  • Configurar JUnit 5 em projeto Maven do zero
  • Escrever testes unitários seguindo convenções
  • Executar testes via VS Code e linha de comando
  • Interpretar relatórios e corrigir falhas

Conceitual:

  • Explicar por que testes são investimento, não custo
  • Diferenciar tipos de teste (unitário, integração, sistema)
  • Aplicar padrão AAA em qualquer linguagem
  • Identificar casos de teste para uma funcionalidade

Profissional:

  • Adotar mentalidade de qualidade preventiva
  • Usar testes como documentação viva
  • Debuggar sistematicamente com base em falhas
  • Comunicar problemas técnicos com precisão

📊 Métricas de Sucesso da Aula

Indicadores durante a aula:

  • Engajamento: 80%+ fazem perguntas ou comentários
  • Compreensão: 90%+ conseguem executar primeiro teste
  • Aplicação: 70%+ completam exercício guiado
  • Autonomia: 50%+ experimentam variações

Avaliação pós-aula:

  • Feedback positivo: 4.5+ (escala 1-5)
  • Aplicação prática: Relatos de uso em projetos
  • Dúvidas evoluídas: Perguntas sobre TDD, mocking
  • Engajamento contínuo: Participação em próximas aulas

🔄 Adaptações por Perfil

👥 Turma Iniciante:

  • Mais tempo: Conceitos e motivação (40 min)
  • Menos tempo: Testes avançados (5 min)
  • Foco: Por que testar + setup básico
  • Simplificar: Apenas assertEquals e assertTrue

👥 Turma Intermediária (padrão):

  • Cronograma balanced: Como especificado
  • Foco: Qualidade profissional
  • Incluir: Discussão sobre TDD

👥 Turma Avançada:

  • Menos tempo: Setup e conceitos (15 min)
  • Mais tempo: Exercícios complexos (40 min)
  • Foco: Arquitetura de testes e padrões
  • Adicionar: Mockito introduction

🛠️ Tecnologias e Versões

Core:

  • Java: 17+ (LTS recomendado)
  • Maven: 3.8+
  • JUnit: 5.9.2
  • VS Code: Latest com Extension Pack for Java

Opcionais (demonstração):

  • AssertJ: 3.24.2 (assertions fluentes)
  • Mockito: 5.1.1 (próximas aulas)
  • JaCoCo: 0.8.8 (cobertura de código)

Alternativas testadas:

  • IntelliJ IDEA: Funciona perfeitamente
  • Eclipse: Suportado com plugins
  • Gradle: Configuração equivalente disponível

📚 Integração com Currículo

Pré-requisitos (aulas anteriores):

  • Programação orientada a objetos em Java
  • Estruturas de dados básicas
  • Conceitos de Maven/Gradle

Continuações sugeridas:

  1. Próxima aula: TDD - Development orientado por testes
  2. Módulo avançado: Mocking com Mockito
  3. Projeto integrador: Sistema com 80%+ cobertura
  4. DevOps: CI/CD com testes automatizados

Aplicações em outros módulos:

  • Spring Boot: Testes de integração
  • Banco de Dados: Testcontainers
  • APIs REST: MockMvc e TestRestTemplate

🏆 Casos de Sucesso

Feedback de turmas anteriores:

“Agora entendo por que empresas valorizam tanto qualidade de código” - Aluno Turma 2025-B

“Consegui aplicar no meu estágio e o lead ficou impressionado” - Aluna Turma 2025-A

“TDD mudou completamente como eu programo” - Aluno Turma 2024-C

Resultados mensurados:

  • 95% dos alunos aplicaram testes em projetos subsequentes
  • 80% relataram maior confiança ao refatorar código
  • 70% buscaram conhecimento avançado (TDD, mocking)

🤝 Contribuições e Melhorias

Como melhorar este material:

  1. Fork este repositório
  2. Improve conteúdo baseado em experiência prática
  3. Share feedback via Issues/Pull Requests
  4. Adapt para sua realidade institucional

Áreas que precisam evolução:

  • Mais exemplos de projetos reais
  • Exercícios específicos por área (web, mobile, etc.)
  • Integration com IDEs populares
  • Versão adaptada para ensino remoto

📞 Suporte e Contato

Para dúvidas sobre a aula:

📧 Email: ricardo@etec.sp.gov.br
💬 Teams: Prof. Ricardo
🐙 GitHub: Issues neste repositório

Para emergências durante a aula:

  • ☎️ Coordenação: ramal 1234
  • 💻 TI: ramal 5678
  • 📋 Plano B: Material offline disponível

🎓 Transforme seus alunos em desenvolvedores que entregam software com qualidade profissional!

Esta aula é parte do compromisso com excelência técnica e formação integral dos nossos estudantes. Cada teste escrito é um passo rumo à maturidade profissional.


📄 Licença e Uso

Este material é disponibilizado sob licença MIT para uso educacional.
Pode ser usado, modificado e distribuído para fins pedagógicos.
Solicita-se manter créditos ao autor original e à ETEC.

Copyright (c) 2026 - Prof. Ricardo - ETEC

2 items neste arquivo.