Junit 기본 개념
인프런 백기선님 <더 자바, 애플리케이션을 테스트하는 다양한 방법> 강의를 듣고 공부한 내용을 정리합니다.
1. Junit
Junit 은 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크이다.
사실은 Junit 이외에도 Spoke, TestNG 등 다양한 테스트 프레임워크가 존재하는데, 단위테스트를 작성하는 자바 개발자 90%이상은 Junit 을 사용하고 있다고한다.
사실 사용법도 비슷비슷해서 Junit 만 알아두어도 충분하다.
구조를 보면, 크게 3가지로 구분되어있다.
Junit Platform : 테스트를 실행해주는 런처를 제공해준다. TestEngine API 를 제공한다.
Jupiter : TestEngine API 의 구현체이다. Junit5 를 제공해준다.
Vintage : TestEngine 의 구현체이다. Junit3과 4를 제원한다.
따라서 요즘에는 Jupiter 기반으로 Junit5 로 테스트 코드를 많이 작성한다.
2. 시작하기
스프링부트 2.2+버전 프로젝트는 기본적으로 Junit5 의존성이 추가되었다.
2-1. 만약 스프링 부트를 사용하지 않고 테스트를 하고 싶다면
아래의 의존성을 추가한다.
2-2. 기본 어노테이션
3. 테스트 이름 표시
@DisplayNameGeneration
Method와 Class 레퍼런스를 사용해서 테스트 이름을 표기하는 방법 설정이다.
기본 구현체로 ReplaceUnderscores 제공한다.
@DisplayName
어떤 테스트인지 테스트 이름을 보다 쉽게 표현할 수 있는 방법을 제공하는 애노테이션이다.
@DisplayNameGeneration 보다 우선 순위가 높다. 두 가지를 같이 쓰면, @DisplayName 에서 설정한 이름으로 표시된다.
4. Junit : Assertion
assertTimeout(duration, executable)
assertTimeoutPreeptively(duration, executable)
별도의 쓰레드를 이용해서 진행하기 때문에 테스트 시에 적용되는 트랜잭션이 정상적으로 동작하지 않을 수도 있다. 주의해서 사용할 것!
Last updated