1. Test환경에서 SpringBootTest와 DirtiesContext에 대하여

@SpringBootTest(webEnvironment = DEFINED_PORT)는 실제 서버를 고정 포트로 띄우 는 방식이라 테스트 간 충돌 가능성이 있습니다. 이미 다른 프로세스가 그 포트를 쓰고 있으면 깨지고, 테스트를 병렬로 돌리기도 불편합니다. 그래서 통합 테스트에 서 실제 서버가 꼭 필요하면 보통 RANDOM_PORT를 더 선호합니다. 더 나아가 컨트롤 러 테스트라면 경우에 따라 @WebMvcTest + MockMvc가 더 가볍고 빠릅니다.

@DirtiesContext(classMode = BEFORE_EACH_TEST_METHOD)도 기본 권장값은 아닙니다. 이유는 매 테스트마다 스프링 컨텍스트를 통째로 다시 띄워서 매우 느리고 무겁기 때문입니다. 이건 “격리 문제를 강제로 해결하는 장치”에 가깝고, 정말 컨텍스트 상 태 자체를 테스트가 오염시키는 경우에만 쓰는 편입니다. 보통은 DB 데이터만 초기 화하면 되므로:

지금 네 테스트 맥락에서 실무적으로 더 나은 쪽은 보통 이겁니다: