기록과 정리

JUnit5 소개 & 시작하기 본문

IT/Test (JUnit)

JUnit5 소개 & 시작하기

zepetto 2021. 9. 13. 20:16

이 글은 백기선님의 '더 자바, 애플리케이션을 테스트하는 다양한 방법' 강의를 참고하였습니다.

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이상의 프로젝트를 만들어주자.

mac 기준 command+shift+t

클래스를 하나 만들고, 단축키를 통해 해당 클래스의 테스트 클래스를 만들어 준다. 위에서 설명한대로 jUnit5 를 사용할 수 있고 의존성을 확인해보면 jupiter 역시 확인 가능하다.

jupiter 5.7.2

Junit 5 부터는 public 을 클래스나 메소드에 붙이지 않아도 된다.

@BeforeAll , @AfterAll

테스트가 시작하기 전 , 딱 한번만 호출이 되게 해줄수 있는 애노테이션. 사용할때는 static , default 둘다 사용 가능하지만, static void로 작성해주면 된다.

@BeforeAll

반대로 @AfterAll은 테스트가 진행되고 나서 실행하게 해주는 애노테이션 . 사용법은 @BeforeAll 과 같다.

@AfterAll

@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

테스트의 이름을 콘솔창에 보여준다.

위에서 해당하는 테스트를 console창에 띄워준다.
이모티콘도 가능하다 ...!

'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