일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- spring
- DispatcherServlet
- zepettoworld.com
- git #gitlab #github
- Bean
- 스프링
- 스프링 부트
- Component
- autowired
- 오토와이어드
- 1
- layout #thymeleaf #화면분할
- Today
- Total
기록과 정리
JUnit5 소개 & 시작하기 본문
이 글은 백기선님의 '더 자바, 애플리케이션을 테스트하는 다양한 방법' 강의를 참고하였습니다.
https://www.inflearn.com/course/the-java-application-test
더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의
자바 프로그래밍 언어를 사용하고 있거나 공부하고 있는 학생 또는 개발자라면 반드시 알아야 하는 애플리케이션을 테스트하는 다양한 방법을 학습합니다., 그냥 개발자를 넘어 '더 나은 개발
www.inflearn.com
JUnit 5 소개
JUnit은 자바 개발자들의 93% 이상이 사용하고 있습니다. 대체제로는 TestNG, Spock 등이 있습니다.
2017년 10월에 공개된 JUnit 5는 JDK 8 이상에서만 지원을 합니다. 보통 JUnit 4를 많이 사용하지만 SpringBoot 2.2.x 부터는 기본으로 JUnit5를 제공하기 시작했습니다.
JUnit5에는 3가지 세부 모듈이 존재합니다.
1. JUnit Platform - JUnit으로 작성한 테스트 코드를 실행시켜주는 런처 제공. Test Engine 제공
( 인텔리제이나, vsCode에서 실행을 할 수 있도록 한다.)
2. Jupiter - TestEngine API 구현체 ( 즉, 아무런 행위가 없다면 기본적으로 Jupiter를 사용한다고 본다. )
3. Vintage - JUnit4, JUnit3 의 TestEngine API 구현체
JUnit 5 시작하기
시작하는 방법은 intellij에서 스프링부트 version 2.2.x 버전이상, jdk 8이상의 프로젝트를 만들어주자.
클래스를 하나 만들고, 단축키를 통해 해당 클래스의 테스트 클래스를 만들어 준다. 위에서 설명한대로 jUnit5 를 사용할 수 있고 의존성을 확인해보면 jupiter 역시 확인 가능하다.
Junit 5 부터는 public 을 클래스나 메소드에 붙이지 않아도 된다.
@BeforeAll , @AfterAll
테스트가 시작하기 전 , 딱 한번만 호출이 되게 해줄수 있는 애노테이션. 사용할때는 static , default 둘다 사용 가능하지만, static void로 작성해주면 된다.
반대로 @AfterAll은 테스트가 진행되고 나서 실행하게 해주는 애노테이션 . 사용법은 @BeforeAll 과 같다.
@BeforeEach, @AfterEach
테스트가 여러건 있을 경우, 각 테스트가 끝나기 전 또는 끝나고 나서 실행을 시키도록 도와주는 애노테이션
test가 2개 있기 때문에, 각각 beforeEach, afterEach가 두번 실행되었다.
@Disabled
급하게(?) 이 테스트만을 스킵을 하고 진행을 해보고 싶을때 사용하는 애노테이션. 해당 테스트를 테스트하지 않는다.
변화
위 애노테이션들은 jUnit4와 비슷하게 변형이 되었는데 , juit4 에서 5로 변형된 애노테이션을 살펴보면
@Test 는 동일
@BeforeClass/ @AfterClass -> @BeforeAll / @AfterAll
@Before/ @After -> @BeforeEach / @AfterEach
@Ignored -> @Disabled
jUnit4 작성된 코드 역시 jUnit 5로 실행을 할 수 있기때문에 굳이 바꾸지 않아도 코드는 실행될 것이라고 예상된다. ( jUnit 빈티지 )
@DisplayNameGeneration
메서드 이름의 전략을 정해준다. 보통 테스트는 camelCase보다 '_' 를 많이 이용한다. 가령, timeout을 test한다고 했을때, 'timeout_test', 'timeout_test를 해보자'등 이름을 지을수 있다. 이럴때 @DispalyNameGeneration을 사용해주면 '_' 없애는 등 정책을 세워 표기해 줄 수 있지만 아래에서 설명을 하는 @DisplayName을 권장한다.
@DisplayName
테스트의 이름을 콘솔창에 보여준다.
'IT > Test (JUnit)' 카테고리의 다른 글
Mockito BDD 스타일 API (0) | 2021.11.08 |
---|---|
Mock 객체 Stubbing (0) | 2021.10.25 |
Mock 객체 사용하기 (0) | 2021.10.24 |
Mockito 소개&준비 (0) | 2021.10.21 |
JUnit 5 Assertion (0) | 2021.09.14 |