📗 테스트 코드 개념 익히기
📍 테스트 코드란?
- test 디렉토리에서 작업
- 다양한 패턴 있음.
- 그 중 given-when-then 패턴 사용
⇨ given : 테스트 실행 준비
⇨ when : 테스트 진행
⇨ then : 테스트 결과 검증
📗 스프링 부트 3와 테스트
스프링 부트 스타터 테스트 목록
• JUnit | JAVA 위한 단위 테스트 프레임워크
• AssertJ | 검증문인 Assertion을 작성하는 데 사용되는 라이브러리. JUnit과 함께 사용해 검증문의 가독성을 높임!
• Spring Test & Spring Boot Test | 스프링 부트 애플리케이션을 위한 통합 테스트 지원
📍 JUnit이란?
- JAVA를 위한 단위 테스트 프레임워크
- 특징
• 테스트 방식 구분할 수 있는 애너테이션 제공
• @Test 애너테이션으로 메서드를 호출할 때마다 새 인스턴스 생성, 독립적 테스트 가능
= 각 테스트에 대해 객체를 만들어 독립적으로 실행
• 예상 결과를 검증하는 Assertion 메소드 제공
• 사용 방법 단순, 테스트 코드 작성 시간 적음
• 자동 실행, 자체 결과를 확인하고 즉각적 피드백 제공
(* 단위 테스트 : 작성한 코드가 의도대로 작동하는지 작은 단위(= 메소드)로 검증하는 것)
📍 JUnit으로 단위 테스트 코드 만들기
- [test - java - JUnitTest.java]
• Assertion.assertEquals(기대값, 실제 검증값)
- [test - java - JUnitCycleTest.java]
@BeforeAll - [@BeforeEace - @Test - @AfterEach] - @AfterAll
1) @BeforeAll
➡ 전체 테스트 시작 전 한 번만 실행 ▷ 전체 테스트 실행 주기에서 한 번만 호출되므로 static으로 선언
➡ 예) DB 연결하거나 테스트 환경 초기화할 때
2-1) @BeforeEach
➡ 테스트케이스 시작 전 매번 실행
➡ 예) 테스트 메소드에서 사용하는 객체 초기화 / 테스트에 필요한 값 미리 넣음
2-2) @Test
2-3) @AfterEach
➡ 각 테스트케이스 종료 전 매번 실행
➡ 예) 테스트 이후 특정 데이터 삭제
3) @AfterAll
➡ 전체 테스트 마치고 종료하기 전 한 번만 실행 ▷ 전체 테스트 실행 주기에서 한 번만 호출되므로 static으로 선언
➡ 예) DB 연결 종료하거나 공통적으로 사용하는 자원 해제할 때
📍 AssertJ로 검증문 가독성 높이기
assertThat(a + b).isEqualTo(sum);
➕ 자주 사용하는 메소드
- isEqualTo(A)
/ isNotEqualTo(A)
: A 값과 같은지 / 다른지
- contains(A)
/ doesNotContain(A)
: A값 포함 여부
- startsWith(A)
/ endsWith(A)
: 접두사 / 접미사
- isEmpty()
/ isNotEmpty()
: 비어있는지 여부
- isPositive()
/ isNegative()
: 양수 / 음수
- isGreaterThan(1)
/ isLessThan(1)
: 1보다 큰 / 작은 값인지
📗 테스트 코드 작성해보기 (실전)
TestController.java에서 [Alt + Enter] - [Create Test] - [OK]하면 TestControllerTest.java 파일 생성
@SpringBootTest
- 메인 애플리케이션 클래스에 추가하는 애너테이션인 @SpringBootApplication이 있는 클래스를 찾고,
그 클래스에 포함된 빈을 찾아 테스트용 애플리케이션 컨텍스트 만듦
@AutoConfigureMockMvc
- MockMvc 생성 및 자동 구성
- 애플리케이션을 서버에 배포하지 않고도 테스트용 MVC 환경을 만들어 요청 및 전송, 응답 기능 제공
(= 컨트롤러 테스트할 때 사용)
@BeforeEach
- 테스트 실행 전 실행하는 메소드에 적용
@AfterEach
- 테스트 실행 후 실행하는 메소드에 적용
➕ HTTP 주요 응답 코드
(해당 글 내용은 📗 스프링 부트 3 백엔드 개발자 되기 - 자바 편을 읽고 정리한 내용입니다.)
'📚 관련 독서 > 스프링 부트 3 백엔드 개발자 되기 - 자바 편' 카테고리의 다른 글
[SpringBoot] 06장 블로그 기획하고 API 만들기 (0) | 2023.08.17 |
---|---|
[SpringBoot] 05장 데이터베이스 조작이 편해지는 ORM (0) | 2023.08.16 |
[SpringBoot] 03장 스프링 부트 3 구조 이해하기 (0) | 2023.08.11 |
[SpringBoot] 2.4 스프링 부트 3 코드 이해하기 (0) | 2023.08.10 |
[SpringBoot] 02장 스프링 부트3 시작하기 (0) | 2023.08.09 |