테스트 어노테이션은 주로 테스트코드를 작성하고 실행할 때 사용되는 어노테이션입니다. 다양한 테스트 프레임워크가 있으며, 대표적으로 JUnit과 TestNG가 있습니다. 프레임워크에서 해당 어노테이션을 사용하면 단위 테스트와 통합 테스트를 실행합니다. 몇 가지 테스트 어노테이션을 살펴보겠습니다.
1. @Test
테스트 메서드를 정의하는 기본 어노테이션입니다. 테스트 케이스 및 대상과 결과 확인을 어떻게 할지를 정의하는 메서드에 사용됩니다.
2. @Before
JUnit 5에서는 @BeforeEach라는 새로운 어노테이션이 도입되어 사용되고 있습니다. 이 어노테이션은 테스트 각각의 실행 전에 실행되는 메서드를 정의하며, 공통적인 설정이나 테스트 환경을 준비할 때 유용합니다.
3. @After
Junit 5에서 더 이상 사용되지 않으며, 대신 @AfterEach라는 새로운 어노테이션이 도입되었ㅅ브니다. 테스트 메서드 실행 후에 실행되는 메서드를 정의하여 테스트 리소스를 정리하거나 연결을 끊는 작업을 수행합니다.
어노테이션 | 설명 | |
@Test | 테스트 메소드를 정의하는 기본 어노테이션 | |
@Before | JUnit 4에서 사용되는 테스트 메소드 실행 전에 실행되는 어노테이션 | |
@BeforeEach | JUnit 5에서 사용되는 테스트 메소드 실행 후에 실행되는 어노테이션 | |
@After | JUnit 4에서 사용되는 테스트 메소드 실행 후에 실행되는 어노테이션 | |
@AfterEach | JUnit 5에서 사용되는 @After 어노테이션 대체 함수 | |
@RunWith | 테스트 실행을 위한 러너를 지정하는 어노테이션 | |
@SpringBootTest | 매플리케이션에서 사용되는 모든 빈을 포함하는 통합 테스트를 위해 사용됩니다. | |
@WebMvcTest | 웹 계층 테스트를 위해 사용되며, 테스트 컨트롤러 및 관련 빈만 로드하여 가볍고 빠르게 테스트를 진행할 수 있습니다. | |
@DataJpaTest | 데이터 계층 테스트를 위해 사용되며, JPA레포지토리 구성에 필요한 빈만 로드해 데이터 소스에 집중할 수 있습니다. | |
다른 | 어노테이션도 | 많이 있습니다. |
위 어노테이션들과 함께 사용되는 스프링 부트 관련 어노테이션입니다.
1. @SpringBootTest: 애플리케이션에서 사용되는 모든 빈을 포함하는 통합 테스트를 위해 사용됩니다.
import org.junit.jupiter.api.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class MyServiceTests {
@Autowired
private MyService myService;
private int input;
private int expected;
@BeforeEach
void setUp() {
input = 3;
expected = 9;
}
@Test
void myTestMethod() {
int result = myService.calculate(input);
Assertions.assertEquals(expected, result);
}
@AfterEach
void tearDown() {
// 마무리 작업
}
}
예제에서는 @SpringBootTest, @BeforeEach, @Test, @AfterEach 어노테이션을 사용하여 스프링 부트 애플리케이션에서 테스트를 준비하고 실행합니다. 스프링 부트와 함께 상요하는 다른 어노테이션들은
1. @WebMvcTest
웹 계층 테스트를 위해 사용되며, 테스트 컨트롤러 및 관련 빈만 로드하여 가볍고 빠르게 테스트를 진행할 수 있습니다.
2. @DataJpaTest: 데이터 계층 테스트를 위해 사용되며, JPA 레포지토리 구서엥 필요한 빈만 로드해 데이터 소스에 집중할 수 있습니다.
스프링 부트에서 제공하는 다양한 어노테이션을 활용하면, 애플리케이션의 여러 계층에서 효과적으로 테스트를 진행할 수 있으며, 테스트의 목적과 복잡성에 따라 적합한 테스트 어노테이션을 사용하여 코드 품질을 향상시킬 수 있습니다.
'Back End > Spring' 카테고리의 다른 글
JPA와 하이버네이트: 객체-관계 매핑의 장점과 비교 (29) | 2024.03.09 |
---|---|
Spring Boot 프로젝트 생성: Spring Initializer의 활용법 (0) | 2024.01.12 |
Spring 프로젝트 구조 web.xml, root-context, servlet-context, 프로젝트 환경설정 파일 (0) | 2023.06.28 |
Spring 프로젝트 구조 mvc 프로젝트 폴더 구조, 스프링 동작 순서 (0) | 2023.06.28 |
Spring Java JDK 환경변수 설정시 JAVA_HOME으로 변수를 만드는 이유 (0) | 2023.06.22 |