테스트 코드 좀 더 살펴보기
given-when-then 패턴
given-when-then 패턴은 테스트 코드를 세 단계로 구분해 작성하는 방식을 의미
given: 테스트 실행을 준비하는 단계
when: 테스트를 진행하는 단계
then: 테스트 결과를 검증하는 단계
JUnit
- JUnit은 자바 언어를 위한 단위 테스트 프레임워크
- 단위 테스트란, 작성한 코드가 의도대로 작동하는 지 작은 단위로 검증하는 것(이때 보통 단위는 메서드)
- @Test 애노테이션으로 메서드를 호출할 때마다 새 인스턴스를 생성, 독립 테스트 가능
- 예상 결과를 검증하는 어설션 메서드 제공
- 자동 실행, 자체 결과를 확인하고 즉각적인 피드백 제공
@DisplayName
- 테스트의 이름을 명시
@BeforeAll
- 전체 테스트를 시작하기 전에 처음으로 한 번만 실행
- 예를 들어, 데이터베이스를 연결해야하거나 테스트 환경을 초기화할 때 사용
- 전체 테스트 실행 주기에서 한 번만 호출되어야 하기 때문에 메서드를 static으로 선언해야 한다.
@BeforeAll
static void beforeAll() {
// something...
}
@BeforeEach
- 테스트 케이스를 시작하기 전에 매번 실행
- 예를 들어, 테스트 메서드에서 사용하는 객체를 초기화하거나 테스트에 필요한 값을 미리 넣을 때 사용
@BeforeEach
void beforeEach() {
// something...
}
@AfterAll
- 전체 테스트를 마치고 종료하기 전에 한 번만 실행
- 예를 들어, 데이터베이스 연결을 종료할 때나 공통적으로 사용하는 자원을 해제할 때 사용
- 전체 테스트 주기에서 한 번만 호출되어야 하므로 메서드를 static으로 선언
@AfterAll
static void afterAll() {
// something
}
@AfterEach
- 각 테스트 케이스를 종료하기 전 매번 실행
- 예를 들어, 테스트 이후에 특정 데이터를 삭제해야 하는 경우 사용
@AfterEach
void afterEach() {
// something...
}
애노테이션 중심으로 JUnit 실행 흐름 살펴보기
AssertJ로 검증문 가독성 높이기
AssertJ는 JUnit과 함께 사용해 검증문의 가독성을 확 높여주는 라이브러리
메서드 이름 | 설명 |
isEqualTo(A) | A 값과 같은지 검증 |
isNotEqualTo(A) | A 값과 다른지 검증 |
contains(A) | A 값을 포함하는지 검증 |
doesNotContain(A) | A 값을 포함하지 않는지 검증 |
startsWith(A) | 접두사가 A인지 검증 |
endsWith(A) | 접미사가 A인지 검증 |
isEmpty() | 비어 있는 값인지 검증 |
isNotEmpty() | 비어 있지 않은 값인지 검증 |
isPositive() | 양수인지 검증 |
isNegative() | 음수 인지 검증 |
isGreaterThan(1) | 1보다 큰 값인지 검증 |
isLessThan(1) | 1보다 작은 값인지 검증 |
자주 사용하는 애노테이션
@SpringBootTest
- @SpringBootTest는 메인 애플리케이션 클래스에 추가하는 애노테이션인 @SpringBootApplication이 있는 클래스를 찾고, 그 클래스에 포함되어 있는 빈을 찾은 다음 테스트용 애플리케이션 컨텍스트를 생성
@AutoConfigureMockMvc
- @AutoConfigureMockMvc는 MockMvc를 생성하고 자동으로 구성하는 애노테이션으로, 애플리케이션을 서버에 배포하지 않고도 테스트용 MVC 환경을 만들어 요청 및 전송, 응답 기능을 제공하는 유틸리티 클래스
- 컨트롤러를 테스트할 때 사용
반응형