TTD 및 테스트 코드를 작성하기 위해 Junit5를 공부해보려고 합니다.
이 글은 백기선님 더 자바, 애플리케이션을 테스트하는 다양한 방법을 정리한 글입니다.
더 자바, 애플리케이션을 테스트하는 다양한 방법
더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의
자바 프로그래밍 언어를 사용하고 있거나 공부하고 있는 학생 또는 개발자라면 반드시 알아야 하는 애플리케이션을 테스트하는 다양한 방법을 학습합니다., 그냥 개발자를 넘어 '더 나은 개발
www.inflearn.com
Junit5란 무엇인가?
자바 프로그래밍 언어용 유닛 테스트 프레임워크이다. JUnit은 테스트 주도 개발면에서 중요하다
Junit5
Junit5에서 가장 중요한 것은 Junit5 프레임워크에 중요한 구성요소이자 새로운 테스트 엔진인 Junit Jupiter입니다.
Jupiter Junit4와 비교해서 다양한 기능과 개선 사항을 제공합니다.
- 테스트 애노테이션
- 매개변수화 테스트
- 조건에 따른 테스트
- 태깅(Tagging)
- 테스트 순서 지정
대표적으로 위와 같은 기능과 개선을 제공하고 Spring Boot 2.2버전 이상의 프로젝트를 만든다면 자동으로 JUnit5가 의존성에 추가됩니다.
기본 애노테이션
Junit5에서 기본적의 애노테이션은 @Test, @BeforeAll, @AfterAll, @BeforeEach, @AfterEach, @Disabled가 있습니다.
- @Test - 테스트 메서드 정의
- @BeforeAll 모든 테스트 실행 하기전 한 번만 실행, 정적(static)메서드로 선언
- @AfterAll 모든 테스트 실행 후에 한번만 실행, 정적(static)메서드로 선언
- @BeforeEach 각 테스트 실행 전에 실행
- @AfterEach 각 테스트 실행 후에 실행
- @Disabled 테스트 비활성화 - 잘 사용하지는 않는다.
테스트 이름 표기하기
테스트 이름을 표기하는데에는 두 개의 애노테이션 @DisplayNameGeneration, @DisplayName이 있습니다.
@DisplayNameGeneration
@DisplayNameGeneration은 이름생성의 규칙을 변경하는 애노테이션입니다.
DisplayNameGenerator.ReplaceUnderscores.class값을 넣는 경우 Camel Case로 되어 있는 경우가 한 칸 띄우기로 변경됩니다.
@DisplayName
@DisplayName 애노테이션은 개별 테스트 메서드에 사용하여 해당 메서드의 표시 이름을 직접 지정할 수 있습니다.
테스트 메서드의 이름을 지정함으로써 어떤 테스트인지 보다 더 쉽게 표현할 수 있는 방법을 제공합니다.
@DisplayName이 @DisplayNameGeneration 보다 우선순위가 높습니다.
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
public class NameTest {
//기본적으로 메소드 이름으로 나타남
//under score를 쓰는게 케이스가 읽기가 편함
//@DisplayNameGeneration 클래스에 있는 모든 테스트에 적용 가능
//@DisplayName 테스트 결과에 나타나는 이름 설정 - 권장
//under score를 쓰더라도 한계가 있음
@Test
@DisplayName("스터디 만들기")
void create_new_study() {
Study study = new Study();
assertNotNull(study);
System.out.println("create");
}
@Test
void create_one() {
System.out.println("create1");
}
@BeforeAll
static void beforeAll() {
System.out.println("before all");
}
@AfterAll
static void afterAll() {
System.out.println("after all");
}
@BeforeEach
void beforeEach() {
System.out.println("before each");
}
@AfterEach
void afterEach() {
System.out.println("after each");
}
}
위에 코드와 아래 결과 사진과 같이 @DisplayName으로 테스트 메서드의 이름을 변경하고 @DisplayNameGeneration으로 create_one을 create one으로 변경할 수 있음을 확인하였습니다.
기본적인 애노테이션의 사용으로 코드를 더욱 효과적으로 관리하고 테스트 라이프 사이클을 정교하게 제어할 수 있음을 확인하였고
@DisplayName과 @DisplayNameGeneration을 사용하여 클래스, 메서드의 이름을 보다 명확하게 관리할 수 있음을 확인하였습니다.
감사합니다.
출처:
더 자바, 애플리케이션을 테스트하는 다양한 방법
더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의
자바 프로그래밍 언어를 사용하고 있거나 공부하고 있는 학생 또는 개발자라면 반드시 알아야 하는 애플리케이션을 테스트하는 다양한 방법을 학습합니다., 그냥 개발자를 넘어 '더 나은 개발
www.inflearn.com
'Java > 더 자바, 애플리케이션을 테스트하는 다양한 방법' 카테고리의 다른 글
Junit5 테스트 인스턴스, 테스트 순서 (0) | 2023.09.12 |
---|---|
Junit5 테스트 반복하기 (0) | 2023.09.12 |
Junit5 태깅, 필터링 Tagging, Filtering (0) | 2023.09.11 |
Junit5 조건에 따라 테스트 실행하기 (0) | 2023.09.11 |
Junit5 Assertion (0) | 2023.09.08 |