Cuándo Usar
Nuevas funcionalidades o endpoints
affaan-m/ECC
Desarrollo guiado por pruebas para Spring Boot usando JUnit 5, Mockito, MockMvc, Testcontainers y JaCoCo. Usar al agregar funcionalidades, corregir bugs o refactorizar.
npx skills add https://github.com/affaan-m/ECC --skill "docs/es/skills/springboot-tdd"Source checked Jul 28, 2026·Refresh due Oct 26, 2026
Reorganized from the pinned upstream SKILL.md
Orientación TDD para servicios Spring Boot con 80%+ de cobertura (unit + integración).
npx skills add https://github.com/affaan-m/ECC --skill "docs/es/skills/springboot-tdd"The pinned source supports a structured brief, but not an expanded tutorial. Only detected inputs, outputs, and sections are shown.
404 source words · 11 usable sections
Documentation workflow
Sections are extracted automatically from the pinned SKILL.md and link back to the source.
Nuevas funcionalidades o endpoints
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
Patrones: - Arrange-Act-Assert - Evitar mocks parciales; preferir stubbing explícito - Usar @ParameterizedTest para variantes
Review the “Pruebas de Capa Web (MockMvc)” section in the pinned source before continuing.
Documentation checklist
The source section “Cuándo Usar” has been checked.
The source section “Flujo de Trabajo” has been checked.
The source section “Pruebas Unitarias (JUnit 5 + Mockito)” has been checked.
The source section “Pruebas de Capa Web (MockMvc)” has been checked.
Choose a different workflow
Test-driven development for Spring Boot using JUnit 5, Mockito, MockMvc, Testcontainers, and JaCoCo. Use when adding features, fixing bugs, or refactoring.
A separate implementation from affaan-m/ECC; compare its source, maintenance signals, and permission requirements.
Open source detailTest-driven development for Spring Boot using JUnit 5, Mockito, MockMvc, Testcontainers, and JaCoCo. Use when adding features, fixing bugs, or refactoring.
A separate implementation from affaan-m/ECC; compare its source, maintenance signals, and permission requirements.
Open source detailTest-driven development for Spring Boot using JUnit 5, Mockito, MockMvc, Testcontainers, and JaCoCo. Use when adding features, fixing bugs, or refactoring.
A separate implementation from affaan-m/ECC; compare its source, maintenance signals, and permission requirements.
Open source detailFAQ
Orientación TDD para servicios Spring Boot con 80%+ de cobertura (unit + integración).
The source record exposes this install command: npx skills add https://github.com/affaan-m/ECC --skill "docs/es/skills/springboot-tdd". Inspect the command and pinned source before running it.
Quality breakdown
Based on traceable docs and repository signals; stars are not treated as quality.
Compare before choosing
These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.
Test-driven development for Spring Boot using JUnit 5, Mockito, MockMvc, Testcontainers, and JaCoCo. Use when adding features, fixing bugs, or refactoring.
Test-driven development for Spring Boot using JUnit 5, Mockito, MockMvc, Testcontainers, and JaCoCo. Use when adding features, fixing bugs, or refactoring.
Test-driven development for Spring Boot using JUnit 5, Mockito, MockMvc, Testcontainers, and JaCoCo. Use when adding features, fixing bugs, or refactoring.
Review springboot-tdd's use cases, installation, workflow, and original source instructions.
Orientación TDD para servicios Spring Boot con 80%+ de cobertura (unit + integración).
@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:
@ParameterizedTest para variantes@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());
}
}
@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());
}
}
@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();
}
}
@DynamicPropertySource para inyectar URLs JDBC en el contexto de SpringFragmento 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>
assertThat) para legibilidadjsonPathassertThatThrownBy(...)class MarketBuilder {
private String name = "Test";
MarketBuilder withName(String name) { this.name = name; return this; }
Market build() { return new Market(null, name, MarketStatus.ACTIVE); }
}
mvn -T 4 test o mvn verify./gradlew test jacocoTestReportRecuerda: Mantener las pruebas rápidas, aisladas y deterministas. Probar comportamiento, no detalles de implementación.