[Spring] 테스트 어노테이션 비교 - @ExtendWith(SpringExtension.class) vs @SpringBootTest

개발log·2024년 4월 20일

Spring

목록 보기
15/16
post-thumbnail

@ExtendWith

@ExtendWith는 JUnit 5 테스트에서 Spring 확장을 활성화하는 데 사용된다. 사용 시에는 확장 클래스를 지정해야 하며, 해당 확장 클래스는 테스트에 대해 수행하려는 작업을 구현한다.

SpringExtension

SpringExtension은 JUnit와 스프링 프레임워크를 통합하기 위한 JUnit 5 확장 클래스이다. 스프링의 테스트 기능을 JUnit 5와 통합하기 위해 사용되며, 테스트 메소드 실행 전/후에 스프링 컨텍스트를 초기화하고 정리하는 작업을 처리한다.

SpringExtension 사용방법

SpringExtension을 사용하기 위해서는 클래스 레벨에 @ExtendWith(SpringExtension.class)를 선언하여 확장을 활성화해야한다. 이를 통해 테스트에서 스프링의 다양한 기능(의존성 주입, 트랜잭션 관리, 테스트 컨텍스트 로딩 등)을 쉽게 활용할 수 있다.

@ExtendWith(SpringExtension.class)를 통해 확장을 활성화하여 스프링 부트 테스트와 같은 유용한 기능을 사용할 수 있다.


@SpringBootTest

@SpringBootTest는 Spring Boot 테스트임을 지정하는 데 사용된다.
이는 테스트 클래스에 대한 테스트 환경을 설정하는 데 매우 편리하며, 주로 통합 테스트 시나리오에서 활용된다.

기능 활용

스프링 애플리케이션 컨텍스트의 로드

@SpringBootTest는 실제 애플리케이션과 유사한 방식으로 동작하기 때문에 이를 통해 애플리케이션의 모든 빈을 로드하고 구성할 수 있다.

필요한 빈의 주입

이 어노테이션을 사용하면 테스트에서 실제 빈을 사용하여 테스트를 수행할 수 있다.

통합 테스트 수행

주로 통합 테스트 시나리오에서 사용되며, Spring Boot 애플리케이션의 다양한 컴포넌트를 테스트할 수 있다. 컨트롤러, 서비스, 리포지토리 등을 포함한다.

@SpringBootTest는 Spring Boot 애플리케이션의 행동을 통합적으로 테스트하는 데 사용된다. 또한 테스트를 위해 Spring Boot의 다양한 유용한 기능들을 자동으로 구성해주어 테스트 작성을 더욱 편리하게 만든다.


@ExtendWith(SpringExtension.class)는 JUnit 5 테스트에서 Spring의 테스트 지원을 활성화하고, @SpringBootTest는 특히 Spring Boot 애플리케이션 컨텍스트를 테스트 목적으로 구성한다. 이 두 어노테이션은 Spring Boot 프로젝트에서 Spring 기능을 활성화하고 애플리케이션 컨텍스트를 테스트하기 위해 함께 사용된다.

profile
나의 개발 저장소

0개의 댓글