상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - JUnit에서 스프링과 통합하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
JUnit에서 스프링(Spring)과 통합하는 방법에 대해 자세히 설명드리겠습니다. 스프링 프레임워크를 사용하는 애플리케이션을 테스트할 때, 단순히 JUnit만 사용하는 것보다 스프링 컨텍스트와 연동하여 테스트하는 것이 훨씬 유용합니다. 이렇게 하면 DI(Dependency Injection), 트랜잭션 관리, 스프링 빈 관리 등을 테스트 코드 내에서 그대로 활용할 수 있습니다. 다음은 JUnit과 스프링 통합 방법의 주요 내용입니다. --- 1. 스프링 테스트 모듈 의존성 추가 먼저, 스프링 통합 테스트를 위해서는 `spring-test` 라이브러리가 필요합니다. Gradle이나 Maven 프로젝트에 다음과 같이 의존성을 추가해야 합니다. - Maven ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> ``` - Gradle ```gradle testImplementation "org.springframework:spring-test:${springVersion}" ``` --- 2. JUnit 4와 스프링 통합 JUnit 4를 사용할 경우, `@RunWith` 어노테이션과 `SpringJUnit4ClassRunner`(또는 최신명 `SpringRunner`)를 이용하여 스프링 컨텍스트를 테스트 환경에 로드합니다. ```java @RunWith(SpringRunner.class) // 또는 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:applicationContext.xml"}) // XML 설정 public class MyServiceTest { @Autowired private MyService myService; @Test public void testServiceMethod() { // myService를 이용한 테스트 코드 작성 } } ``` - `@RunWith(SpringRunner.class)` : JUnit에게 스프링 테스트 <a href='https://sangseek.com/sangseeks/실행기/ko'>실행기</a>를 사용하라고 지시. - `@ContextConfiguration` : 테스트에 사용할 스프링 설정 정보를 지정(XML, <a href='https://sangseek.com/sangseeks/Java Config/ko'>Java Config</a> 등). - `@Autowired` : 스프링이 관리하는 빈(Bean)을 테스트 클래스에 주입. --- 3. JUnit 5와 스프링 통합 JUnit 5부터는 플러그인 방식이 바뀌면서 `@ExtendWith`와 `SpringExtension`을 사용합니다. ```java @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {AppConfig.class}) // Java Config 설정 예시 public class MyServiceTest { @Autowired private MyService myService; @Test void testServiceMethod() { // 테스트 코드 작성 } } ``` - `@ExtendWith(SpringExtension.class)` : JUnit 5에 스프링 테스트 확장을 등록. - `@ContextConfiguration` : 마찬가지로 스프링 컨텍스트 설정을 지정. 또는 최근에는 스프링 부트 환경에서는 `@SpringBootTest`를 사용해 보다 쉽게 컨텍스트를 띄울 수 있습니다. --- 4. 스프링 부트를 이용한 JUnit 테스트 스프링 부트 프로젝트에서는 `@SpringBootTest` 어노테이션이 많이 사용됩니다. 이는 애플리케이션 전체 컨텍스트를 로드하고, JUnit 4 또는 JUnit 5 모두에서 사용할 수 있습니다. ```java @SpringBootTest public class MyServiceTest { @Autowired private MyService myService; @Test public void testServiceMethod() { // 테스트 실행 } } ``` - 별도의 `@RunWith` 또는 `@ExtendWith`를 명시하지 않아도, 스프링 부트에서는 자동으로 확장기를 등록합니다. (JUnit 4의 경우 `@RunWith(SpringRunner.class)`와 조합) --- 5. 테스트용 스프링 설정 지정 방법 - XML 설정 이용: `@ContextConfiguration(locations = "...")` - Java Config 클래스 이용: `@ContextConfiguration(classes = {ConfigClass.class})` - 스프링 부트: `@SpringBootTest` (필요시 `classes = ` 옵션으로 명시 가능) - 프로파일 설정: `@ActiveProfiles("test")` 등으로 테스트 전용 프로파일 지정 가능 --- 6. 트랜잭션 관리 테스트 테스트 중에 데이터 변경이 있을 경우, 기본 설정으로는 테스트 메서드마다 트랜잭션이 시작되고 끝나면 롤백됩니다. 이를 위해 `@Transactional`과 `@Rollback` 어노테이션을 테스트에 붙일 수 있습니다. ```java @RunWith(SpringRunner.class) @SpringBootTest @Transactional public class MyServiceTest { @Test @Rollback(true) // 기본값, 메서드 내 DB 변경 사항 롤백 public void testInsert() { // DB에 값 삽입 후 검증 } } ``` --- 7. 빈 주입 외에도 스프링 테스트 기능 활용 - `@MockBean` : 스프링 부트 테스트 시 Mockito 기반 Mock 빈 생성. - `@TestPropertySource` : 테스트용 프로퍼티 파일 지정. - `@DirtiesContext` : 테스트 메서드 후 컨텍스트 초기화 필요 시 선언. - Mockito 등과 조합해 단위 테스트와 통합 테스트 적절히 조합 가능. --- 요약 - JUnit과 스프링 연동하려면 `spring-test` 의존성을 추가. - JUnit4는 `@RunWith(SpringRunner.class)` + `@ContextConfiguration`. - JUnit5는 `@ExtendWith(SpringExtension.class)` + `@ContextConfiguration`. - 스프링 부트 환경에선 `@SpringBootTest`를 활용. - `@Autowired`로 스프링 빈을 주입해 구조화된 테스트 가능. - 트랜잭션 롤백 기능으로 데이터 일관성 유지하며 테스트 지원. 이런 과정을 통해 JUnit 테스트와 스프링 컨텍스트를 자연스럽게 연동하여 실제 애플리케이션 환경과 최대한 같은 조건에서 테스트를 수행할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기