원클릭으로
integration-testing
Guías para pruebas de interacción de módulos y flujos completos con Spring Boot Test.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Guías para pruebas de interacción de módulos y flujos completos con Spring Boot Test.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Standardized testing stack for Sysacad Next Backend using JUnit 5, Mockito, and Spring Boot Test.
Mandatory rule requiring a corresponding test file for every business logic file.
Guidelines for unit and integration testing in the Sysacad Next BackEnd.
Catalog of all specialized skills used across the Sysacad Next project (Frontend & Backend).
A tool for creating new skills following the Sysacad Next standard.
Regla de oro que prohíbe terminantemente el uso del subagente del navegador (browser subagent).
| name | integration-testing |
| description | Guías para pruebas de interacción de módulos y flujos completos con Spring Boot Test. |
Las pruebas de integración validan que los componentes del sistema (Controladores, Servicios, Repositorios, Base de Datos) trabajen juntos correctamente. A diferencia de los tests unitarios, aquí probamos el contexto real de la aplicación.
@SpringBootTest: Levanta el contexto de aplicación completo. Se usa para flujos E2E internos (de Controller a DB).MockMvc: Herramienta principal para simular peticiones HTTP sin desplegar un servidor real.@AutoConfigureMockMvc: Anotación necesaria para inyectar el cliente MockMvc.@MockBean: Se utiliza para mockear únicamente servicios externos (ej. EmailService) y así no depender de redes externas.@Transactional: CRÍTICO. Asegura que cada test se ejecute en una transacción que hace rollback al terminar, manteniendo la DB limpia.Un test de integración debe validar la comunicación real entre todas las capas del backend. NO se deben usar Mocks para Controller, Service o Repository:
@SpringBootTest
@AutoConfigureMockMvc
@Transactional
class InscripcionIntegrationTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private InscripcionRepository inscripcionRepository; // Inyección real
@Test
void deberiaInscribirAlumnoACarrera() throws Exception {
// 1. Preparar DTO de entrada
String request = "{ \"estudianteLegajo\": \"55555\", \"carreraId\": \"...\" }";
// 2. Ejecutar petición al Controller -> Service -> Repository
mockMvc.perform(post("/api/admin/matriculacion")
.contentType(MediaType.APPLICATION_JSON)
.content(request))
.andExpect(status().isCreated());
// 3. VERIFICAR CAPA DE DATOS: Confirmar que el repositorio realmente guardó la entidad
boolean existe = inscripcionRepository.existsByEstudianteLegajo("55555");
assertTrue(existe, "El alumno debería estar matriculado en la DB");
}
}
@MockBean para interfaces externas al backend (ej. EmailService, StorageService). Todo lo que sea parte del dominio (modelo/, service/, repository/) debe ser real.@Transactional, cada test comienza con la base de datos en un estado conocido y deshace sus cambios al finalizar.@WithMockUser o inyectando tokens JWT válidos) en la petición.