Application Test 스터디를 진행하면서 공부한 내용을 정리하도록 하겠습니다
자바 개발자가 가장 많이 사용하는 테스팅 프레임워크
Spring Boot 버전이 올라감에 따라 기본 JUnit을 5로 설정됨
JUnit5부터 전부 모듈화가 진행됨
구성요소 (이미지)
구성요소
JUnit Platform : 테스트를 실행해주는 런처 제공. TestEngine API 제공
Jupiter : TestEngine API 구현체로 JUnit 5를 제공
Vintage : JUnit4 & JUnit3를 지원하는 TestEngine 구현체
Spring Boot 프로젝트가 2.2 버전 이상이면 기본적으로 JUnit5 사용
의존성 추가 방식 사용
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
@Test : 테스트 메소드를 나타내는 어노테이션
@Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@API(status = STABLE, since = "5.0")
@Testable
public @interface Test {
}
@BeforeAll : 해당 클래스에 위치한 모든 테스트 메서드 실행 전에 딱 한 번 실행되는 메서드
@Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@API(status = STABLE, since = "5.0")
public @interface BeforeAll {
}
@AfterAll : 해당 클래스에 위치한 모든 테스트 메서드 실행 후에 딱 한 번 실행되는 메서드
@Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@API(status = STABLE, since = "5.0")
public @interface AfterAll {
}
@BeforeEach : 해당 클래스에 위치한 모든 테스트 메서드 실행 전에 실행 되는 메서드
@Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@API(status = STABLE, since = "5.0")
public @interface BeforeEach {
}
@AfterEach : 해당 클래스에 위치한 모든 테스트 메서드 실행 후에 실행 되는 메서드
@Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@API(status = STABLE, since = "5.0")
public @interface AfterEach {
}
@Disabled : 테스트를 하고 싶지 않은 클래스나 메서드에 붙이는 어노테이션
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@API(status = STABLE, since = "5.0")
public @interface Disabled {
/**
* The reason this annotated test class or test method is disabled.
*/
String value() default "";
}