<자바와 JUnit을 활용한 실용주의 단위 테스트> 책과 Junit 5, AssertJ 공식문서를 참고하였습니다.
⚠️ 테스트 클래스에서
static필드는 피해야 한다 !!
@BeforeEach 메서드는 반환 유형이 void 여야 하며 static 이어서는 안 됩니다. private을 사용하는 것은 권장하지 않으며 향후 릴리스에서는 허용되지 않을 것입니다. 선택적으로 ParameterResolver가 확인할 매개변수를 선언할 수 있습니다.@BeforeEach 메서드의 실행 순서를 보장하지 않습니다.@BeforeEach 메서드는 @AfterEach 메서드에 연결되지 않습니다. 따라서 wrapping 동작과 관련하여 어떠한 보장도 없습니다. 예를 들어, 두 개의 @BeforeEach 메서드(createA(), createB()) 와 두 개의 @AfterEach 메서드(destroyA(), destroyB()) 가 있다고 가정할 때, destroyA() 는 destroyB() 의 앞이나 뒤에 호출될 수 있습니다. 따라서 개발자는 테스트 클래스 또는 테스트 인터페이스당 @BeforeEach 메서드 하나, @AfterEach 메서드 하나만 선언할 것을 권장합니다.import org.junit.jupiter.api.*;
public class ExampleTest {
@BeforeEach
void createA() {
System.out.println("createA() executed");
}
@BeforeEach
void createB() {
System.out.println("createB() executed");
}
@AfterEach
void destroyA() {
System.out.println("destroyA() executed");
}
@AfterEach
void destroyB() {
System.out.println("destroyB() executed");
}
@Test
void test1() {
System.out.println("Test 1 executed");
}
@Test
void test2() {
System.out.println("Test 2 executed");
}
}
createB() executed
createA() executed
Test 1 executed
destroyA() executed
destroyB() executed
createA() executed
createB() executed
Test 2 executed
destroyA() executed
destroyB() executed
@BeforeAll 이 달린 메서드는 현재 테스트 클래스의 모든 테스트 이전에 실행해야 합니다.@BeforeEach 메서드와 달리 @BeforeAll 메서드는 지정된 테스트 클래스에 대해 한 번만 실행됩니다.