세모체 프로젝트를 진행하던 중에 회원 생성 전에 카테고리를 미리 생성해줘야 하는 일이 있었다.
회원 서비스를 테스트를 하기 위해서 매 테스트마다 계속 카테고리를 생성하는 게 효율적이지 않다고 생각해서, 클래스 시작할 때 한번 실행되는 BeforeAll를 사용하기로 했다.
하지만 BeforeAll은 static하게 적용되므로 이는 Transaction 범위에서 벗어나 Transaction Rollback 대상이 되지 않았다. 따라서 테스트가 끝난 뒤에도, 테스트 카테고리가 남아있는 오류를 발견했다.
⇒ 결국 다시 BeforeEach를 사용했다. 찾아보니까 BeforeAll 보다는 다들 비효율적이더라도 테스트 환경을 전부 통일시키기 위해 BeforeEach를 사용하는 것 같다.
@BeforeAll and @Transaction are not working - changes on db side are not rollbacked