쌓고 쌓다

@BeforeAll, @AfterAll non-static 메서드로 호출하는법 본문

프로그래밍/spring

@BeforeAll, @AfterAll non-static 메서드로 호출하는법

승민아 2024. 1. 26. 17:51

 

테스트 코드를 작성하며 초기 데이터가 필요하여 생성하여 디비에 저장하고 테스트가 끝난후 삭제하는 과정이 필요했다.

 

쉽게 말해서 테스트 코드를 실행하기 전과 후에 딱 한번 실행할 함수가 필요했다.

 

거기에 좋은 @BeforeAll, @AfterAll 어노테이션이 있어 사용하려고 한다.

 

그러나 이 어노테이션들은 static 메서드에 붙이고 사용해야 했다.

 

왜 static 이여야할까...?

 

JUnit5에서 테스트 클래스의 Life Cycle은 기본값이 PER_METHOD이다.

 

즉, 테스트 클래스는 하나의 테스트 메서드가 끝나고 다시 클래스가 생성된다.

그래서 static으로 선언해야지 클래스 내부 요소들을 유지할 수 있는 것이다.

 

다음과 같이 테스트 클래스의 Life Cycle을 클래스단위로 바꿔주자.

 

 

다음은 생명 주기에 따른 테스트 클래스의 메서드가 호출되는 순서이다.

출처 : https://velog.io/@stberry8/F-Lab-%EB%AA%A8%EA%B0%81%EC%BD%94-%EC%B1%8C%EB%A6%B0%EC%A7%80-63%EC%9D%BC%EC%B0%A8-BeforeAll-AfterAll-Non-static-method%EB%A1%9C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

Comments