Junit5
Junit은 Java의 단위 테스팅 도구이다.
단위 테스트 Framework중 하나
단정문으로 Test Case 수행결과를 판별
Annotation으로 간결하게 사용 가능
JUnit5
Junit5는 이전 버전과 다르게 3개의 서브 프로젝트 모듈로 이루어져있다.
JUnit Platform : TestEngine API, Console Launcher, JUnit 4 based Runner 등 포함
JUnit Jupiter : TestEngine API 구현체로 JUnit 5 구현
JUnit Vintage : TestEngine API 구현체로 JUnit 3, 4 구현
Junit5에서 JUnit Vintage 모듈을 포함하고 있어 JUnit 3,4도 사용할 수 있지만, 완벽하게 지원해주는 것은 아니다.
Dependencies
spring boot 2.2.0 이후 버전에서는 Junit5가 기본으로 변경되었다. Junit5는 Java8 부터 지원하며, 이전 버전으로 작성된 테스트 코드여도 컴파일이 지원된다.
SpringBoot 2.2.0 이전 버전에서 junit5 설정
maven
gradle
테스트를 구성하고, 프레임워크를 상속하기 위한 어노테이션을 지원한다. 대부분 어노테이션은 junit-jupiter-api
모듈의 org.junit.jupiter.api
패키지안에 존재한다.
용어
테스트 클래스
최상위 클래스, 스태틱 멤버 클래스, @Nested
클래스에 적어도 한개의 @Test
어노테이션이 달린 테스트 메소드가 포함되어있는 클래스를 말한다. 테스트 클래스는 abstract
이면 안되고, 하나의 생성자가 존재해야한다.
테스트 메소드
아래 메타 어노테이션이 붙여진 메소드를 말하며, 테스트 메소드는 테스트 할 클래스, 상속한 부모 클래스, 인터페이스에 선언된다. abstract
를 선언해서는 안되며, 어떠한 값도 반환되면 안된다.
@Test
@RepetedTest
@ParameterizedTest
@TestFactory
@TestTemplate
라이플 사이클 메소드
아래 메타 어노테이션이 붙여진 메소드를 말하며, 테스트 메소드는 테스트 할 클래스, 상속한 부모 클래스, 인터페이스에 선언된다. abstract
를 선언해서는 안되며, 어떠한 값도 반환되면 안된다.
@BeforeAll
@AfterAll
@BeforeEach
@AfterEach
Dependency Injection
Junit Jupiter의 주된 변화로 테스트 클래스의 생성와 메서드가 파라미터를 가질 수 있게 되었다. 이는 코드의 유연함이 증가할 뿐만 아니라, 의존성 주입 또한 가능하게 되었다.
ParameterResolver
는 실행 시간 동안에 동적으로 파라미터를 해석할 수 있는 API를 정의하고 있다. 현재 자동으로 등록되는 3개의 Resolver가 있다.
TestInfo
RepetitionInfo
TestInfoParameterResolver
Last updated