Skip to content

joaodddev/tdd-java-springboot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

TDD na Prática com Java e Spring Boot

Este projeto é uma demonstração completa e prática de como aplicar o TDD (Test-Driven Development) no mundo real usando o ecossistema Spring Boot. A aplicação é uma API REST de Gerenciamento de Usuários, construída inteiramente guiada por testes.

🎯 Conceitos Explorados

Ciclo Red-Green-Refactor: A base do TDD. Escreva um teste que falha (Red), faça o código passar de qualquer forma (Green) e então melhore o código (Refactor). Padrão AAA (Arrange-Act-Assert): Estruturação padronizada e legível para escrita de testes. Testes Unitários: Validação de regras de negócio isoladas usando Mockito. Testes de Integração: Validação de interação com o banco de dados (JPA/H2) de forma real. Testes de Controller: Validação dos endpoints HTTP (status code, JSON de requisição/resposta) usando MockMvc. Uso Avançado de Mocks: Comportamento simulado com when(), thenReturn(), verificação de interações com verify() e never().

🛠️ Tecnologias

Java 17 (Records, var, etc) Spring Boot 3.2.x (Web, Data JPA, Validation) JUnit 5 (Framework de testes) Mockito (Mocking de dependências) H2 Database (Banco em memória para testes de integração) Lombok (Redução de boilerplate) Maven (Gerenciador de dependências)

📌 Endpoints da API

Método URL Descrição Status Code POST /api/v1/users Cria um novo usuário 201 (Created) / 409 (Conflict) GET /api/v1/users Lista todos os usuários 200 (Ok) GET /api/v1/users/{id} Busca usuário por ID 200 (Ok) / 404 (Not Found)

Exemplo de JSON para o POST (criação):

json

{ "name": "João Dev", "email": "joao@exemplo.com" }

👨‍💻 Autor

Desenvolvido por João Victor

About

API REST em Java explorando TDD na prática: ciclo Red-Green-Refactor, padrão AAA, JUnit 5, Mockito e Spring Boot 3. Um guia definitivo de desenvolvimento guiado por testes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages