🧩 Spring MVC UnitTest란

정의

Spring MVC UnitTest는 실제 서버를 띄우지 않고 Spring MVC 요청/응답 흐름을 검증하는 테스트 방식이다. 컨트롤러, 메시지 변환, 상태 코드, JSON 응답 같은 부분을 빠르게 확인할 수 있다.

  • 웹 서버 배포 없이 테스트를 수행할 수 있다.
  • 컨트롤러 단위 검증에 적합하다.
  • MockMvc와 함께 많이 사용한다.

⚙️ 테스트 환경 구성

build.gradle

dependencies {  
	...
    testImplementation 'org.springframework:spring-test:5.3.8'  
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'  
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'  
}

TestClass

@ExtendWith(SpringExtension.class)  
@WebAppConfiguration  
@ContextConfiguration(classes = {APIConfiguration.class})  
class ApiTestControllerTest {
	...
}

역할

@WebAppConfiguration은 WebApplicationContext 기반 테스트 환경을 만들고, @ContextConfiguration은 테스트에 사용할 설정 클래스를 지정한다.

🧪 MockMvc와의 관계

  • MockMvc를 사용하면 실제 서버 없이 요청과 응답을 모의할 수 있다.
  • ResultActions를 통해 응답 결과를 검증할 수 있다.
  • Spring MVC 테스트는 보통 이 조합으로 진행한다.

⚠️ 주의사항

  • @ExtendWith(SpringExtension.class)는 JUnit 5 기준이다.
  • JUnit 4를 쓴다면 @RunWith(SpringJUnit4ClassRunner.class)를 사용한다.
  • 단순 컨트롤러 테스트와 실제 스프링 컨텍스트 테스트는 목적이 다르다.
  • standaloneSetup과 전체 컨텍스트 기반 테스트는 검증 범위가 다르다.

📌 정리

  • Spring MVC UnitTest는 실제 서버 없이 MVC 흐름을 검증하는 테스트다.
  • @WebAppConfiguration, @ContextConfiguration, MockMvc가 핵심이다.
  • 컨트롤러와 응답 포맷을 빠르게 확인할 때 유용하다.

연결문서

댓글남기기