Ch03. 객체지향 패러다임
테스트 코드 작성 이유
- 문서화 역할
- 코드에 결함을 발견하기 위함
- 리팩토링 시 안정성 확보
- 테스트하다 보면 낮은 결합도 설계를 얻을 수 있음
TDD
- Test Driven Development
- 테스트 주도 개발
- 프로덕션 코드보다 테스트 코드를 먼저 작성하는 개발 방법
- TFD ( Test First Development ) + 리팩토링
- 기능 동작을 검증 ( 메소드 단위 )
BDD
- Behavior Driven Development
- 행위 주도 개발
- 시나리오 기반으로 테스트 코드를 작성하는 개발 방법
- 하나의 시나리오는 Given , When , Then 구조를 가짐
경계 조건에 대한 테스트 코드 작성 권장
@ParameterizedTest
- 여러 개의 테스트를 한번에 작성
@ValueSource
- (strings = {"",""})
- 테스트에 주입할 값을 배열로 지정
- 테스트 , 배열 1:1 대응
- byte, short, int, long, float, double, char, boolean,String, Class
import 하면 강한 결합? 클래스 내부에서 생성 = 강한 결합 외부에서 주입 받음 = 낮은 결합
@FuntionInterface
객체지향
- 추상화
- 다형성
- 캡슐화
- 상속
객체지향의 5가지 설계 원칙 ( SOLID )
- 단일책임원칙
- 개방 폐쇄의 원칙
- 리스코프 치환의 원칙
- 인터페이스 분리의 원칙
- 의존성 역전의 원칙
객체지향 패러다임
- 객체에 책임을 할당하고 메세지를 주고 받는 것
- SW 복잡도를 낮춤
- 클래스가 아닌 객체에 초점
- 객체에 적절한 역할과 책임을 할당하는지
given - when - then 패턴
- given - 테스트 준비
- when - 테스트 진행
- then - 테스트 결과 검증
Mockito
- 테스트에 사용할 가짜 객체인 Mock 객체를 쉽게 만들고, 관리하고 , 검증 할 수 있게 지원하는 테스트 프레임 워크
단위 테스트
- 작성한 코드가 의도대로 작동하는지 작은 단위로 검증하는 것
- 보통 메소드 단위
@DisplayName
- 테스트 이름
@Test
- 테스트를 수행하는 메소드
@BeforeAll
- 전체 테스트 전 1회 실행
- 테스트 환경 초기화
@BeforeEach
- 테스트 케이스를 시작하기 전마다 실행
@AfterAll
- 전체 테스트를 마치고 종료하기 전 1회 실행
@AfterEach
- 테스트 케이스를 종료하기 전마다 실행
@AutoConfigureMockMvc
- MockMvc를 생성하고 자동으로 구성하는 어노테이션
MockMvc
- 어플리케이션을 서버에 배포하지 않고도 테스트용 MVC 환경을 만들어 요청 및 전송, 응답 기능을 제공하는 유틸리티 클래스