springboot-tdd
Faz seu agente escrever testes para código Spring Boot usando ferramentas como JUnit e Mockito. É útil para garantir que o código funcione corretamente após mudanças.
O que ela faz
Este guia ajuda a criar testes para o seu código Spring Boot. Ele ensina a escrever testes antes do código principal, garantindo que tudo funcione corretamente e que o código esteja bem testado.
Quando usar
- ✓Ao adicionar novas funcionalidades ao seu aplicativo.
- ✓Ao corrigir erros no código existente.
- ✓Ao organizar ou melhorar o código sem mudar o que ele faz.
Exemplo do que pedir para a IA
“Como posso escrever testes para a nova funcionalidade de login no meu aplicativo Spring Boot?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você escreve testes que falham primeiro, depois cria o código mínimo para fazê-los passar. Por fim, você refatora o código enquanto os testes continuam passando e verifica se a cobertura de testes é alta.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill springboot-tddOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/springboot-tdd/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Fluxo de Trabalho TDD com Spring Boot
Orientação de TDD para serviços Spring Boot com mais de 80% de cobertura (unitária + integração).
Quando Usar
- Novos recursos ou endpoints
- Correções de bugs ou refatorações
- Adicionando lógica de acesso a dados ou regras de segurança
Fluxo de Trabalho
- Escreva os testes primeiro (eles devem falhar)
- Implemente o código mínimo para passar
- Refatore com os testes verdes
- Garanta a cobertura (JaCoCo)
Testes Unitários (JUnit 5 + Mockito)
@ExtendWith(MockitoExtension.class)
class MarketServiceTest {
@Mock MarketRepository repo;
@InjectMocks MarketService service;
@Test
void createsMarket() {
CreateMarketRequest req = new CreateMarketRequest("name", "desc", Instant.now(), List.of("cat"));
when(repo.save(any())).thenAnswer(inv -> inv.getArgument(0));
Market result = service.create(req);
assertThat(result.name()).isEqualTo("name");
verify(repo).save(any());
}
}
Padrões:
- Arrange-Act-Assert (Organizar-Agir-Afirmar)
- Evite mocks parciais; prefira stubbing explícito
- Use
@ParameterizedTestpara variantes
Testes de Camada Web (MockMvc)
@WebMvcTest(MarketController.class)
class MarketControllerTest {
@Autowired MockMvc mockMvc;
@MockBean MarketService marketService;
@Test
void returnsMarkets() throws Exception {
when(marketService.list(any())).thenReturn(Page.empty());
mockMvc.perform(get("/api/markets"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.content").isArray());
}
}
Testes de Integração (SpringBootTest)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
class MarketIntegrationTest {
@Autowired MockMvc mockMvc;
@Test
void createsMarket() throws Exception {
mockMvc.perform(post("/api/markets")
.contentType(MediaType.APPLICATION_JSON)
.content("""
{"name":"Test","description":"Desc","endDate":"2030-01-01T00:00:00Z","categories":["general"]}
"""))
.andExpect(status().isCreated());
}
}
Testes de Persistência (DataJpaTest)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Import(TestContainersConfig.class)
class MarketRepositoryTest {
@Autowired MarketRepository repo;
@Test
void savesAndFinds() {
MarketEntity entity = new MarketEntity();
entity.setName("Test");
repo.save(entity);
Optional<MarketEntity> found = repo.findByName("Test");
assertThat(found).isPresent();
}
}
Testcontainers
- Use contêineres reutilizáveis para Postgres/Redis para espelhar a produção
- Conecte via
@DynamicPropertySourcepara injetar URLs JDBC no contexto Spring
Cobertura (JaCoCo)
Snippet Maven:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.14</version>
<executions>
<execution>
<goals><goal>prepare-agent</goal></goals>
</execution>
<execution>
<id>report</id>
<phase>verify</phase>
<goals><goal>report</goal></goals>
</execution>
</executions>
</plugin>
Asserções
- Prefira AssertJ (
assertThat) para legibilidade - Para respostas JSON, use
jsonPath - Para exceções:
assertThatThrownBy(...)
Construtores de Dados de Teste
class MarketBuilder {
private String name = "Test";
MarketBuilder withName(String name) { this.name = name; return this; }
Market build() { return new Market(null, name, MarketStatus.ACTIVE); }
}
Comandos de CI
- Maven:
mvn -T 4 testoumvn verify - Gradle:
./gradlew test jacocoTestReport
Lembre-se: Mantenha os testes rápidos, isolados e determinísticos. Teste o comportamento, não os detalhes de implementação.
Perguntas frequentes
O que é TDD?
TDD significa 'Desenvolvimento Guiado por Testes'. É uma técnica onde você escreve testes antes de escrever o código real.
Por que usar JUnit, Mockito e MockMvc?
São ferramentas que ajudam a escrever diferentes tipos de testes (unitários, de integração) de forma eficiente para aplicativos Spring Boot.
O que é 'cobertura de testes'?
É uma métrica que mostra qual porcentagem do seu código foi executada pelos testes. O objetivo é ter uma cobertura alta (acima de 80%) para garantir que a maior parte do código esteja testada.
Detalhes
Descrição original do autor
Test-driven development for Spring Boot using JUnit 5, Mockito, MockMvc, Testcontainers, and JaCoCo. Use when adding features, fixing bugs, or refactoring.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #122
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
webapp-testing
Permite testar aplicações web locais, verificar funcionalidades e depurar o comportamento da interface. Captura screenshots e logs do navegador.
anthropics/skills
ponytail-audit
Faz uma auditoria completa do código. Ele encontra bugs, falhas de segurança, código lento e sugere o que remover ou melhorar.
DietrichGebert/ponytail
ponytail-review
Revisa a qualidade de uma mudança no código. Verifica se a lógica está correta, se é segura, rápida e se todas as linhas são necessárias.
DietrichGebert/ponytail