Spring Boot/testing
JUnit 생명 주기 메소드
최-코드
2024. 11. 8. 22:57
필요성 : 테스트를 개발할 때는 일반적으로 각 테스트 전에 객체를 생성하고 테스트 데이터를 설정하거나, 각 테스트 후에 리소스를 해제하고 데이터를 정리하는 등의 공통 작업을 수행해야 할 때가 있는데, 이를 위해 간편하게 하기 위해 JUnit에서 생명 주기 메소드를 사용한다.
@BeforeEach : 각 테스트 메소드가 실행되기 전에 호출된다. 주로 객체 생성이나 테스트 데이터 설정과 같은 공통적인 초기화 작업에 유용하다.
@AfterEach : 각 테스트 메소드가 실행된 후에 호출된다. 주로 리소르를 해체하거나 테스트 데이터를 정리하는 공통 작업에 유용하다.
참고사항 : 여러 개의 테스트 메소드를 실행할 때 각 테스트 메소드가 실행되기 전에 한 번, 실행되고 나서 한 번 동작한다. 즉, n개의 테스트 메소드가 있으면 각각 n번 동작한다.
class DemoUtilsTest {
DemoUtils demoUtils;
@BeforeEach
void setUp() {
//set up
demoUtils = new DemoUtils();
}
@Test
void add() {
//execute
int actual = demoUtils.add(2, 4);
//assert
Assertions.assertEquals(6, actual, "2+4 must be 6");
Assertions.assertNotEquals(7, actual, "2+4 must not be 7");
}
추가 생명주기 메소드
- @BeforeAll : 모든 테스트 메소드가 실행되기 전에 단 한 번 실행된다. 데이터베이스 연결 설정과 같은 작업에 유용하다.
- @AfterAll : 모든 테스트 메소드가 실행되고 나서 단 한 번 실행된다. 데이터베이스 연결 해제나 서버 연결 해제와 같은 작업에 유용하다.
- 위의 두 어노테이션이 붙은 메소드는 무조건 static 키워드가 붙어야 한다.
cf) @BeforeEach와 @BeforeAll 중 테스트 독립성을 위해서 @BeforeEach를 사용하는 것이 좋다.
독립성과 관련 없는 것들만 @BeforeAll을 사용하자.