728x90
static 초기화 블록
- 클래스가 JVM에 처음 로드될 때 한번 실행되며, 클래스 레벨에서 공유되는 정적 자원이나 설정 초기화시 사용된다.
- static 블록 내에서 예외가 발생하면 JUnit과 같은 테스트 프레임워크가 처리하는 것에 어려움이 있다.
- static 블록의 실행 시점이 명확하지 않다.
public class StaticInitializationExample {
private static final int SIZE;
private static final List<String> NAMES = new ArrayList<>();
static {
SIZE = getIntFromConfigFile("config.txt");
NAMES.add("Alice");
NAMES.add("Bob");
}
}
@BeforeClass
- @BeforeClass 메서드는 해당 클래스의 테스트 메서드가 실행되기 전에 딱 한번만 실행된다. (static 메서드여야한다.)
- 테스트 클래스의 모든 테스트 메서드가 실행되기 전에 초기화 작업을 수행하는데 사용된다. 공통의 환경 설정이나 리소스 초기화에 사용된다.
- 테스트의 실행 순서에 영향을 받지 않으므로 안정적으로 테스트 환경을 조성할 수 있다.
public class CalculatorTest {
private static Calculator calculator;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
calculator = new Calculator(); // 한번만 실행된다.
}
@Test
public void testAdd() {
assertEquals(5, calculator.add(2, 3));
}
}
static 블록 대신 @BeforeClass 사용하기
- @BeforeClass를 사용하여 테스트 환경의 초기화 코드를 명확하게 관리하고, 테스트 프레임워크가 예외를 적절히 처리할 수 있다.
- @BeforeClass 어노테이션을 사용하여 테스트의 의도를 파악하고 구조를 명확하게 표현할 수 있다.
- 실행 순서 : static 블록 -> @Parameter -> @BeforeClass -> @Before -> @Test
728x90
'Spring' 카테고리의 다른 글
[Test] void 메서드 테스트 및 Stubbing (모의 동작 지정하기) (0) | 2024.04.10 |
---|---|
Spring REST API 서버 배포 (0) | 2023.05.31 |
REST API Proxy 서버 개발 - 이미지 전달 (0) | 2023.05.29 |