Junit Before? Beforeclass?
테스트 코드를 짜며 (더 잘짜고 싶다… 하..) 짠 테스크 코드에 대한 리뷰를 받았다. 선배 개발자로부터 @Before과 @BeforeClass 차이를 아냐 물어보시기에 저는 ㅠㅠㅠㅠ를 외쳤다. 요즘 항상 좋으신 말을 해주시는 선배 개발자이시다.
현재 개발하는 환경이 Junit4이지만 해당 블로그는 Junit5로 작성할 예정이다
Junit4 -> Junit5
Junit4 | Junit5 | 특징 |
---|---|---|
@BeforeClass | @BeforeAll | - 테스트 클래스의 모든 테스트 메소드가 실행되기 전에 실행 - static method - 초기화 코드가 들어갈수 있음 |
@AfterClass | @AfterAll | - 테스트 클래스의 모든 테스트 메소드가 종료된 후 실행 - static method - 코드를 클린업 할수 있음 |
@Before | @BeforeEach | - 테스트 클래스 안의 테스트 메소드가 한번 실행 될때 마다 실행 - 초기화 코드를 재설정 할수 있음 하지만 초기화 처럼 쓰면 테스트시 힘들어짐 |
@After | @AfterEach | -테스트 클래스 안의 테스트 메소드가 한번 실행 될때 마다 실행 - 예를 들어 테스트가 끝나고 롤백해야 할때 |
이미지 설명
위의 이미지 순서대로 테스트 코드를 작성해보자
1 |
|
실행결과 아래와 같은 결과를 얻는다1
2
3
4
5
6
7
8BeforeAll
BeforeEach
testCodeOne start
AfterEach
BeforeEach
testCodetwo start
AfterEach
AfterAll
Junit5에 어노테이션 명이 좀더 정확하게 의미를 알려주는것 같다.