반응형
JUnit 5 시작
스프링 부트 프로젝트 만들기
- 2.2+ 버전 부터 스프링 부트 프로젝트를 만든다면 기본으로 JUnit 5 의존성이 추가 된다.
- 이전에는 JUnit 4를 제공
- 스프링 부트 프로젝트 사용하지 않는다면 별도로 JUnit 5를 사용하기 위해서 의존성을 추가해주어야 한다.
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
- Junit 5 부터는 테스트 클래스, 테스트 메소드, 라이프사이클 메소드에 이제
public
접근 지정자를 적어주지 않아도 된다.private
접근 지정자는 사용할 수 없다.
- 자바 리플렉션 API를 통해 접근 지정자에 상관없이 클래스, 메소드에 접근 가능하다.
- JUnit 5 기본 애노테이션
- @Test
- Test Method
- 해당 어노테이션이 선언된 메소드는 단위 테스트 메소드임을 나타낸다.
- @BeforeAll
- Lifecycle Method
- 모든 테스트 실행 전 한 번만 호출된다.
- 해당 애노테이션을 사용하는 메소드는
static
을사용해서 구현해야한다.
- 리턴 타입이
void
이어야 한다.
- @AfterAll
- Lifecycle Method
- 모든 테스트 실행 후 한 번만 호출된다.
- 해당 애노테이션을 사용하는 메소드는
static
을사용해서 구현해야한다.
- 리턴 타입이
void
이어야 한다.
- @BeforeEach
- Lifecycle Method
- 모든 테스트를 실행할 때, 각각의 테스트를 실행하기 이전에 한 번씩 호출
- @AfterEach
- Lifecycle Method
- 모든 테스트를 실행할 때, 각각의 테스트를 실행한 이후에 한 번씩 호출
- @Disabled
- 테스트를 실행할 때 해당 어노테이션이 선언된 메소드는 테스트를 실행하지 않는다.
- @Test
- Display Names (테스트 이름 표현 관련)
- @DisplayNameGeneration
- Method와 Class 레퍼런스를 사용해서 테스트 이름을 표기하는 방법 설정.
- 테스트 클래스에 해당 어노테이션을 설정하면 클래스의 테스트 메소드 모두 적용.
- 기본 구현체로 ReplaceUnderscores 제공
- @DisplayName
- 어떤 테스트인지 테스트 이름을 보다 쉽게 표현할 수 있는 방법을 제공하는 애노테이션.
- @DisplayNameGeneration 보다 우선 순위가 높다.
- @DisplayNameGeneration
JUnit 5 예제
//junit 5 부터는 테스트 클래스, 테스트 메소드, 라이프사이클 메소드가 public일 필요가 없다. private 사용 불가능.
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) //Underscore를 빈 공백으로 치환
class FooTest {
@Test
void create_new_foo() {
Foo foo = new Foo();
System.out.println("create");
}
@Test
@Disabled //해당 테스트를 실행하지 않겠다고 설정하는 애노테이션
void create_new_foo_again() {
System.out.println("create1");
}
@Test
void create2() {
System.out.println("create2");
}
@Test
@DisplayName("\uD83D\uDC7E foo 만들기 \uD83D\uDC7E")
void create3() {
System.out.println("create3");
}
/**
* 모든 테스트 실행전 단 한번 호출된다.
* static 메소드로 구현해야한다.
* return type void
*/
@BeforeAll
static void beforeAll() {
System.out.println("beforeAll");
}
/**
* 모든 테스트 실행된 이후 단 한번 호출된다.
* static 메소드로 구현해야한다.
* return type void
*/
@AfterAll
static void afterAll() {
System.out.println("afterAll");
}
/**
* 모든 테스트를 실행할 때,
* 각각의 테스트를 실행하기 이전에 한 번씩 호출
*/
@BeforeEach
void beforeEach() {
System.out.println("beforeEach");
}
/**
* 모든 테스트를 실행할 때,
* 각각의 테스트를 실행한 이후에 한 번씩 호출
*/
@AfterEach
void afterEach() {
System.out.println("afterEach");
System.out.println();
}
}
테스트 결과
[참고자료]
반응형
'Java > Test Framework' 카테고리의 다른 글
[더 자바, 애플리케이션을 테스트하는 다양한 방법] JUnit 5 - 테스트 반복수행 (0) | 2021.07.25 |
---|---|
[더 자바, 애플리케이션을 테스트하는 다양한 방법] JUnit 5 - 태깅과 필터링 (0) | 2021.07.23 |
[더 자바, 애플리케이션을 테스트하는 다양한 방법] JUnit 5 - 조건에 따라 테스트 실행 (0) | 2021.07.21 |
[더 자바, 애플리케이션을 테스트하는 다양한 방법] JUnit 5 - Assertion (0) | 2021.07.19 |
[더 자바, 애플리케이션을 테스트하는 다양한 방법] JUnit 5 - 소개 (0) | 2021.07.14 |