TDD 8

[TDD] 6. Controller 계층 테스트

📚 TDD 1-1. Spring Test 1-2. Spring Test 모듈 2. JUnit 5 3. Spring Data JPA: 데이터 액세스 계층 테스트 4. Mockito 5. Service 계층 테스트1. API 계층 테스트의 목적컨트롤러 테스트는 서버를 띄우지 않고 API Mapping(요청→검증→위임→응답)을 빠르게 테스트하는 도구MockMvc로 성공/실패/예외 흐름을 고정하고, 에러 포맷과 상태 코드를 일관되게 유지하면 회귀와 장애를 줄일 수 있음비즈니스 로직 자체는 검증 X → 서비스 단위 테스트에서 수행목적핵심 확인 포인트대표 테스트요청 처리 정확성라우팅, 파라미터/바디 파싱, 서비스 위임should delegate to service and return 200입력값 검증Bean V..

[TDD] 5. Service 계층 테스트

📚 TDD 1-1. Spring Test 1-2. Spring Test 모듈 2. JUnit 5 3. Spring Data JPA: 데이터 액세스 계층 테스트 4. Mockito 1) 서비스 계층 테스트의 목적서비스 계층이란?정의유스케이스(업무 시나리오)를 수행하는 애플리케이션의 핵심 계층도메인 규칙 조합, 저장소/외부 시스템과 상호작용, 예외와 트랜잭션 경계 관리목표컨트롤러/프레젠테이션 계층에서 입력을 받아 도메인 로직을 실행하고 결과 반환테스트 포인트입력 검증상태 변화(저장/수정/삭제)외부 호출 횟수/순서실패 시 롤백project-root/├─ src/│ ├─ main/java/│ │ ├─ app/service/ # 서비스 유스케이스│ │ ├─ app/domain/ ..

[TDD] 4. Mockito

📚 TDD 1-1. Spring Test 1-2. Spring Test 모듈 2. JUnit 5 3. Spring Data JPA: 데이터 액세스 계층 테스트1. Mock 객체가짜 객체(Fake Object)불필요한 의존을 제거하고 단위에 집중된 테스트 가능Mockito: Mock 객체를 만들어주는 도구1) Stub vs Mock vs Spy항목StubMockSpy목적고정된 응답 반환호출 여부/순서/횟수 검증, 행동 설정 가능실제 객체를 감싸서 일부 메서드만 mocking구현테스트 대상 외부 동작을 하드코딩하여 제공미리 동작 정의하거나 호출 결과를 검증실제 객체와 결합되어 실제 동작도 가능사용 시점간단한 조건/결과가 필요한 테스트외부 시스템이 복잡하거나 테스트 검증이 필요한 경우일부만 대체하고 나머지..

[TDD] 3. Spring Data JPA: 데이터 액세스 계층 테스트

📚 TDD 1-1. Spring Test 1-2. Spring Test 모듈 2. JUnit 5DB와 직접적으로 상호작용하는 코드 대상으로 정확성, 무결성, 신뢰성을 검증하는 테스트체크 포인트DB에 데이터가 정확하게 저장되는가?불필요하거나 중복된 데이터가 저장되지 않는가?DB 제약조건(UNIQUE, NOT NULL 등)이 정확히 작동하는가?커스텀 쿼리의 결과가 정확히 의도한 데이터를 반환하는가?1. 테스트 목적1) 데이터 영속성 검증: 엔티티 객체가 DB에 저장되고, 다시 불러와도 동일한 값이 유지되는지 검증예제@DisplayName("상품 저장 시 DB에 영속적으로 저장되는지 확인")@Nestedclass SaveProductTest { @Test @DisplayName("정상적인 상품 ..

[TDD] 2. JUnit 5

📚 TDD 1-1. Spring Test 1-2. Spring Test 모듈1. JUnit 5 구조구성 요소 설명주요 클래스 / 의존성JUnit Platform실행 기반 플랫폼Launcher, Engine SPIJUnit JupiterJUnit 5 API 및 실행junit-jupiter-api, junit-jupiter-engineJUnit VintageJUnit 3, 4 호환 계층junit-vintage-engine + JUnit 41) JUnit Platform테스트 실행을 위한 런타임 환경Jupiter든 Vintage든 모두 Platfrom위에서 실행주요 모듈모듈설명junit-platform-engineJupiter, Vintage와 같은 엔진 구현을 위한 SPI 제공junit-platform-..

[TDD] 1-2. Spring Test 모듈

📚 TDD 1-1. Spring Test1. spring-boot-starter-test 구성// build.gradledependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test'} 라이브러리설명JUnit자바 진영의 대표적인 테스트 프레임워크MockitoMock 객체를 생성하여 단위 테스트 가능AssertJ가독성 높은 fluent 형식의 assertion 지원Hamcrestmatcher 기반의 assertion 도구Spring TestSpring ApplicationContext, MockMvc 등을 지원JSONassertJSON 응답 비교에 유용한 도구Spring Boot TestSpring Boot ..

[TDD] 1-1. Spring Test

1. 테스트 종류테스트 종류주요 목적테스트 범위특징단위 테스트작은 단위(메서드, 클래스)의 기능 검증매우 좁음빠르고 가볍다슬라이스 테스트특정 계층(예: Controller, Repository)만 검증중간Spring 제공 지원 활용통합 테스트여러 컴포넌트 간의 연동 검증넓음실제 환경 유사 2. 단위 테스트(Unit Test): 보통 메서드 단위로 작성1) F.I.R.S.T 원칙Fast(빠르게)Independent(독립적으로) : 어떤 테스트 케이스를 먼저 실행시켜도 실행되는 순서와 상관없이 정상적인 실행이 보장되어야 함Repeatable(반복 가능하도록) : 어떤 환경에서도 반복해서 실행이 가능해야 함Self-validating(셀프 검증이 되도록) : 성공/실패를 보여야 함Timely(시기적절하게) :..

728x90