Skip to main content

integration-testing

Implement Spring Framework integration tests with TestContainers, Spring Test, and database fixtures

소스 정보

저장소
Hack23/cia
최근 소스 활동
2026년 3월 21일 19:44
감지된 SKILL.md 언어
영어
스타
241
포크
56

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
integration-testing
description
Implement Spring Framework integration tests with TestContainers, Spring Test, and database fixtures
license
Apache-2.0
# Integration Testing Skill ## Purpose Test component interactions, database operations, and external API integrations using Spring testing framework with TestContainers. ## When to Use - ✅ Testing repository layer with real database - ✅ Testing REST API endpoints (if applicable) - ✅ Testing Spring Security configuration - ✅ Testing external API integrations ## Spring Integration Test Patterns ```java @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = ApplicationContext.class) @Sql(scripts = "/test-data.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD) @Sql(scripts = "/cleanup.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) public class PoliticianIntegrationTest { @Autowired private PoliticianRepository repository; @Test void shouldCreatePoliticianViaApi() { // Arrange PoliticianRequest request = new PoliticianRequest("John", "Doe", "S"); // Act ResponseEntity<Politician> response = restTemplate.postForEntity( "/api/politicians", request, Politician.class ); // Assert assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED); assertThat(response.getBody()).isNotNull(); // Verify in database Politician saved = repository.findById(response.getBody().getId()).orElseThrow(); assertThat(saved.getFirstName()).isEqualTo("John"); } } ``` ## TestContainers for PostgreSQL ```java @Testcontainers @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = ApplicationContext.class) public class DatabaseIntegrationTest { @ClassRule public static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:18") .withDatabaseName("cia_test") .withUsername("test") .withPassword("test"); @BeforeClass public static void setupTestDatabase() { System.setProperty("spring.datasource.url", postgres.getJdbcUrl()); System.setProperty("spring.datasource.username", postgres.getUsername()); System.setProperty("spring.datasource.password", postgres.getPassword()); } @Test public void shouldConnectToDatabase() { assertThat(postgres.isRunning()).isTrue(); } } ``` ## Security Integration Tests ```java @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {ApplicationContext.class, SecurityConfig.class}) @WebAppConfiguration public class SecurityIntegrationTest { @Autowired private WebApplicationContext context; private MockMvc mockMvc; @Before public void setup() { mockMvc = MockMvcBuilders .webAppContextSetup(context) .apply(springSecurity()) .build(); } @Test @WithMockUser(roles = "ADMIN") public void shouldAllowAdminAccess() throws Exception { mockMvc.perform(get("/api/admin/users")) .andExpect(status().isOk()); } @Test public void shouldDenyUnauthenticatedAccess() throws Exception { mockMvc.perform(get("/api/admin/users")) .andExpect(status().isUnauthorized()); } } ``` ## References - Spring Framework Testing: https://docs.spring.io/spring-framework/reference/testing.html - TestContainers: https://www.testcontainers.org/
GitHub에서 보기