Source profileQuality 72/100

affaan-m/ECC/docs/es/skills/springboot-tdd/SKILL.md

springboot-tdd

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

Source repository stars
234,327
Declared platforms
0
Static risk flags
0
Last source update
2026-07-27
Source checked
2026-07-28

Decision brief

What it does—and where it fits

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

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/affaan-m/ECC --skill "docs/es/skills/springboot-tdd"
    Safe inspection promptEditorial

    Inspect the Agent Skill "springboot-tdd" from https://github.com/affaan-m/ECC/blob/4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38/docs/es/skills/springboot-tdd/SKILL.md at commit 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Cuándo Usar

      Nuevas funcionalidades o endpoints

      Nuevas funcionalidades o endpointsCorrecciones de bugs o refactorizacionesAgregar lógica de acceso a datos o reglas de seguridad
    2. 02

      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

      Escribir pruebas primero (deben fallar)Implementar el código mínimo para que pasenRefactorizar con pruebas en verde
    3. 03

      Pruebas Unitarias (JUnit 5 + Mockito)

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

      Arrange-Act-AssertEvitar mocks parciales; preferir stubbing explícitoUsar @ParameterizedTest para variantes
    4. 04

      Pruebas de Capa Web (MockMvc)

      Review the “Pruebas de Capa Web (MockMvc)” section in the pinned source before continuing.

      Review and apply the “Pruebas de Capa Web (MockMvc)” source section.

    Permission review

    Static risk signals and limitations

    No configured static risk pattern was detected

    This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score72/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars234,327SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    affaan-m/ECC
    Skill path
    docs/es/skills/springboot-tdd/SKILL.md
    Commit
    4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38
    License
    MIT
    Collected
    2026-07-28
    Default branch
    main
    View the original SKILL.md

    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)

    @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)

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

    Pruebas de Integración (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());
      }
    }
    

    Pruebas de Persistencia (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

    • Usar contenedores reutilizables para Postgres/Redis que reflejen producción
    • Conectar mediante @DynamicPropertySource para inyectar URLs JDBC en el contexto de Spring

    Cobertura (JaCoCo)

    Fragmento 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>
    

    Aserciones

    • Preferir AssertJ (assertThat) para legibilidad
    • Para respuestas JSON, usar jsonPath
    • Para excepciones: assertThatThrownBy(...)

    Builders de Datos de Prueba

    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 test o mvn verify
    • Gradle: ./gradlew test jacocoTestReport

    Recuerda: Mantener las pruebas rápidas, aisladas y deterministas. Probar comportamiento, no detalles de implementación.

    Alternatives

    Compare before choosing