JUnit4 Wiki 1 , JUnit 5 User Guide Document 2 를 보고 정리한 내용
JUnit 이란
JUnit은 테스트코드를 편리하게 반복 가능하게 실행할 수 있도록 도와주는 테스팅 관련 오픈소스 프레임워크다. 주요 기능은 다음과 같다.
- AssertThat과 같은 Assertions 3 함수 제공
- @Before, @After와 같은 동일한 컨텍스트를 갖는 단위 테스트를 위한 기능 제공
- test 코드를 실행해주는 runner
JUnit 5 특이사항
이전 버전(4이하) JUnit과는 다르게, JUnit5에서는 3개의 서브 프로젝트의 여러 모듈로 구성된다.
3개의 구성요소는 JUnit Platform, JUnit Jupiter, JUnit Vintage이다.
자주쓰이는 어노테이션
자주쓰이는 어노테이션에 대해 정리한다. Junit 5로 넘어오면서 이름이 바뀐 것들은 이전이름 / JUnit5부터 바뀐 이름
으로 표기
@RunWith / @ExtendWith
Runner 관련된 어노테이션이다.
해당 어노테이션이 존재하면, JUnit에 빌트인 되어있는 러너를 통해 테스트 코드가 실행되는 것이 아니라 어노테이션에 넣어준 러너를 통해서 테스트 코드가 실행된다.
예를 들어 @RunWith(SpringRunner.class)
/ @ExtendWith(SpringExtension.class)
면 SpringRunner를 통해서 테스트 코드가 실행된다.
많이쓰는 @ParameterizedTest
도 내부를 들여다보면 @RunWith(Parameterized.class)
/ @ExtendWith(ParameterizedTestExtension.class)
로 되어있는 것을 알 수 있다.
@Test
테스트 메소드임을 명시하는 어노테이션이다.
@DisplayName
테스트에 대한 설명을 추가할 수 있는 어노테이션이다. 테스트 메소드에 @DisplayName("주문번호로 주문을 조회한다.")
와 같이 설명을 붙일 수 있고 테스트 실행 결과에도 해당 문구로 표시된다.
@Ignore / @Disabled
Test Runner가 해당 테스트를 무시해서 실행되지 않도록 할 때 사용
아직 테스트 코드가 완성되지 않았거나, 실패하는 테스트를 임시적으로 무시하고 테스트를 돌려봐야하는 상황에서 사용할 수 있다.
@After / @AfterEach
개별 테스트 메소드가 끝난 후 수행 되는 메소드에 붙이는 어노테이션
@AfterClass / @AfterAll
해당 테스트 클래스에 포함된 모든 테스트가 끝난 후 수행 되는 메소드에 붙이는 어노테이션
@Before / @BeforeEach
개별 테스트 메소드가 실행되기 전 수행 되는 메소드에 붙이는 어노테이션
@BeforeClass / @BeforeAll
해당 테스트 클래스에 포함된 모든 테스트가 실행되기 전 수행 되는 메소드에 붙이는 어노테이션
https://junit.org/junit5/docs/current/user-guide/#overview ↩
실무에서는 JUnit의 Assertion보다 assertj의 Assertions이 더 많이 선호된다. (빌더 패턴 형식으로 구문이 더 직관적이다.) ↩