2024. 5. 14. 15:57ㆍ스프링
스프링부트가 테스트를 위해 두 가지 모듈을 제공한다.
1) spring-boot-test : 핵심 기능 포함
2) spring-boot-test-autoconfigure : 테스트를 위한 AutoConfiguration 제공
'spring-boot-starter-test' 를 dependencies에 추가 해주면 자동으로 추가가 된다.
테스트는 단위 테스트와 통합 테스트가 있다.
- 단위 테스트
단위테스트는 @SpringBootTest 어노테이션을 사용하지 않는다. 그래서 스프링을 실항하지 않고 하는 테스트이다. @SpringBootTest 가 붙으면 스프링이 실행되기 때문에 단위 테스트가 아니다. 단위 테스트는 작은 단위로 검증하는 테스트로 보통 메소드 단위로 테스트한다. 메소드에 @Test 어노테이션을 붙여서 해당 메소드 실행을 통해 결과를 검증한다.
public class JUnitTest {
@DisplayName("테슽트 이름이닷") // 테스트 이름 명시
@Test // 테스트 메서드
public void junitTest() {
int a = 3;
int b = 4;
int sum = 7;
Assertions.assertEquals(sum, a + b); // 값이 같은지 확인
}
}
위에 메소드가 실행될때 실행되는 사이클이 있다.
@BeforeAll => @BeforeEach => @Test => @AfterEach => @AfterAll
@BeforeAll 애너테이션
전체 테스트를 시작하기 전에 처음으로 한 번만 실행된다. 예를 들어 데이터베이스를 연결해야 하거나 테스트 환경을 초기화할 때 사용한다. 이 애너테이션은 전체 테스트 실행 주기에서 한 번 만 호출되어야 하기 때문에 메서드를 static으로 선언해야 한다.
@BeforeEach 애너테이션
테스트 케이스를 시작하기 전에 매번 실행한다. @Test가 붙어있는 메소드를 실행할때마다 해당 메소드가 실행전에 실행된다. 만약에 @Test 가 붙은 메소드가 두개이면 각각 두 메소드가 실행하기전에 @BeforeEach 메소드가 실행된다. 각 인스턴스에 대해 메서드를 호출해야 하므로 메서드는 static이 아니어야 한다.
@AfterAll 애너테이션
전체 테스트를 마치고 종료하기 전에 한 번만 실행된다. 예를 들어 데이터베이스 연결을 종료할 때나 공통적으로 사용하는 자원을 해제할 때 사용할 수 있다. 전체 테스트 실행 주기에서 한 번만 호출되어야 하므로 메서드를 static으로 선언해야 한다.
@AfterEach 애너테이션
각 테스트 케이스를 종료하기 전 매번 실행한다. @Test가 붙어있는 메소드를 실행할때마다 해당 메소드가 실행에 실행된다. @BeforeEach 애너테이션과 마찬가지로 메서드는 static이 아니어야 한다.
import org.junit.jupiter.api.*;
public class JunitSudyTest {
@BeforeAll // 전체 테스트를 시작하기 전에 1회 실행하므로 메서드는 static으로 선언
static void beforeAll() {
System.out.println("beforeAll");
}
@BeforeEach // 테스트 케이스를 시작하기 전마다 실행
public void beforeEach() {
System.out.println("beforeEach");
}
@Test
public void test1() {
System.out.println("test1");
}
@Test
public void test2() {
System.out.println("test2");
}
@Test
public void test3() {
System.out.println("test3");
}
@AfterAll // 전체 테스트를 마치고 종료하기 전에 1회 실행하므로 메서드는 static으로 선언
static void afterAll() {
System.out.println("afterAll");
}
@AfterEach // 테스트 케이스를 종료하기 전마다 실행
public void afterEach() {
System.out.println("afterEach");
}
}
- 통합테스트
스프링부트의 모든 빈들을 스캔하고 애플리케이션 컨텍스트를 생성하여 테스트를 한다. 이를 위해서 클래스 위에 @SpringBootTest 어노테이션을 붙여줘야 한다.
import org.junit.jupiter.api.*;
@SpringBootTest
public class JunitSudyTest {
@Test
public void test1() {
System.out.println("test1");
}
@Test
public void test2() {
System.out.println("test2");
}
@Test
public void test3() {
System.out.println("test3");
}
}
'스프링' 카테고리의 다른 글
스프링 AOP (0) | 2024.05.16 |
---|---|
스프링 jdbc 템플릿 (0) | 2024.05.16 |
DI 주입 방법 (0) | 2024.05.14 |
@Configuration 스프링빈 등록 (0) | 2024.05.14 |
@Configuration 스프링빈 등록 (0) | 2024.05.14 |