@Before @BeforeClass @BeforeEach @BeforeAll
Spring 에서 테스트 코드를 작성할 때, 모든 테스트 코드 전에 반복적으로 해 주어야 하는 작업이 필요할 때가 있습니다.
예를 들어, 사용자 인증이 선행되어야 하는 테스트의 경우, 매 테스트 코드마다 인증하는 코드를 넣어야 합니다.
public class Test {
@Test
public void test1(){
authenticateForTest(); // login
System.out.println("test 1");
}
@Test
public void test2(){
authenticateForTest(); // login
System.out.println("test 2");
}
private void authenticateForTest() {
System.out.println("authenticate");
}
}
JUnit 에서는 이런 반복적인 코드를 없애기 위해 @Before
어노테이션을 제공합니다.
이 어노테이션에도 여러 종류가 있는데 간단하게 요약하면 아래와 같습니다
@Before (JUnit 4), @BeforeEach (JUnit 5)
- 클래스 내에 존재하는 각각의 @Test 를 실행하기 전에 매번 실행
@BeforeClass (JUnit 4), @BeforeAll (JUnit 5)
- 모든 테스트를 실행하기 전 딱 한번만 실행
static
으로 선언해야 함
Example
public class Test {
@BeforeAll
public static void beforeAll() {
System.out.println("@BeforeAll");
}
@BeforeEach
public void beforeEach() {
System.out.println("@BeforeEach");
}
@Test
public void test1(){
System.out.println("@Test 1");
}
@Test
public void test2(){
System.out.println("@Test 2");
}
@AfterEach
public void afterEach() {
System.out.println("@AfterEach");
}
@AfterAll
public static void afterAll() {
System.out.println("@AfterAll");
}
}
전체 플로우
@BeforeAll
@BeforeEach
@Test 1
@AfterEach
@BeforeEach
@Test 2
@AfterEach
@AfterAll
'Framework > Spring' 카테고리의 다른 글
Spring Security 와 JWT 겉핥기 (79) | 2021.03.07 |
---|---|
[Spring] JUnit 5 에서 @Nested 와 @DisplayName 으로 가독성 있는 테스트 코드 작성하기 (1) | 2021.01.26 |
[Spring] Property 값 주입 (1) | 2020.11.09 |
[Spring] IoC, DI (1) | 2020.11.09 |
[Spring] JPA (Java Persistence API) (0) | 2020.11.09 |