claudegoodies
Skill

springboot-tdd

From affaan-m

Desarrollo guiado por pruebas para Spring Boot usando JUnit 5, Mockito, MockMvc, Testcontainers y JaCoCo. Usar al agregar funcionalidades, corregir bugs o refactorizar.

Guides TDD workflow for Spring Boot with JUnit 5, Mockito, MockMvc, Testcontainers and JaCoCo templates.

Use it when

  • Adding new Spring Boot endpoints or features
  • Fixing bugs or refactoring existing service code
  • Writing unit, web-layer, integration or repository tests
  • Setting up JaCoCo coverage reporting in Maven/Gradle

Skip it if

  • Project isn't Spring Boot/Java with JUnit 5+Mockito stack
  • Not using Testcontainers for Postgres/Redis integration tests
  • Looking for coverage tooling beyond JaCoCo

Facts

Repository
affaan-m/ECC
Status
Actively maintained
Last commit

Source preview

The instructions Claude Code reads when this skill runs.

# Flujo de Trabajo TDD en Spring Boot

Orientación TDD para servicios Spring Boot con 80%+ de cobertura (unit + integración).

## Cuándo Usar

- Nuevas funcionalidades o endpoints
- Correcciones de bugs o refactorizaciones
- Agregar lógica de acceso a datos o reglas de seguridad

## Flujo de Trabajo

1) Escribir pruebas primero (deben fallar)
2) Implementar el código mínimo para que pasen
3) Refactorizar con pruebas en verde
4) Exigir cobertura con JaCoCo

## Pruebas Unitarias (JUnit 5 + Mockito)

```java
@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());
  }
}
```

Patrones:
- Arrange-Act-Assert
- Evitar mocks parciales; preferir stubbing explícito
- Usar `@ParameterizedTest` para variantes

## Pruebas de Capa Web (MockMvc)

```java
@WebMvcTest(MarketController.class)
class MarketControllerTest {
  @Autowired MockMvc mockMvc;
  @MockBean MarketService marketService;

  @Test
  void returnsMarkets() throws Exception {
    when(marketService.list(any())).thenReturn(Page.empty());

 
View full source on GitHub →

Other skills