일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 와끼
- 자켓실측
- 미니마카
- 40HQ컨테이너
- 지연환가료
- 나일론지퍼
- 비리짐
- 슈퍼코딩
- TACKING
- 비슬론지퍼
- 고급영어단어
- 엑셀자동서식
- 미국영어연음
- AATCC
- 필터링후복사붙여넣기
- 클린코드
- Armhole Drop
- 영어시간읽기
- 헤이큐
- 우레탄지퍼
- 봉제용어
- WHATTIMEOFTHEDAY
- 암홀트롭
- 웹API
- 엑셀드래그단축키
- MERN스택
- 핸드캐리쿠리어차이점
- 40HQ컨테이너40GP컨테이너차이
- 요척합의
- 엑셀필터복사붙여넣기
- Today
- Total
CASSIE'S BLOG
슈퍼코딩 105강 Spring boot와 테스팅v2 본문
104강 테스트는 빈을 부르는게 아니라 그냥 객체로 만들어서 테스트하는거였음
스프링에서 활동하는 친구들을 불러서 슬라이스테스트 & 통합테스트 할 예정
밑에 Repository Layer 테스트를 한다 그러면 Repository Layer 빈만 불러서 테스트함.
데이터소스같은 경우에는 정의하는 방법이 2가지임
application.yaml에 정의가능
bean에 정의할 수 있다. (JdbcConfig 파일 만들어서)
하나의 애플리케이션에 두개이상의 데이터소스를 정의하게되면은
application.yaml으로 하면 설정이 어렵고 빈으로 하면 편할 것 같아서
test하는 것은 application.yaml에 설정하는 거를 테스트할 예정이라서
data소스를 적었다고함.
ReservationJpaRepository 저런 거 하고 나서 제대로 동작하는지 테스트를 하고싶잖아?
그러면 원래는
Controller 들어가가지고 다시 호출해서 API불러서 SQL보고 이런 식으로 진행했잖아
테스트를 위해서 API로직을 바꿔야하는 경우가 생긴데
그래서 테스트코드를 별도로 적을거라고함.
@DataJpaTest에서 slice test라는 말은 repository빼고는 안 부른다는 말임
repositoryLayer를 부를려고 Autowired 어노테이션을 쓰면 그냥 빈을 등록해주는건가?
이전에도 여러번 설명을 했는데 test코드에서는 생성자 주입을 하기보다는
필드주입으로하고 AutoWired라는 어노테이션을 이용해서 빈을 호출하는게 맞다고함.
지금은 돌아감
slice test라는거를 증명하기위해서
@Autowired
필드에 private AirReservationService airReservationService
이거 적어주면 실행이 안될거라고함.
바로 test fail
package com.github.supercoding.repository.reservations;
import com.github.supercoding.service.AirReservationService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@Slf4j
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@DataJpaTest //대표적인 slice test => Dao Layer / Jpa 사용하고있는 Slice Test / 어노테이션 꼭 적어줘야함
class ReservationJpaRepositoryJpaTest {
@Autowired
private ReservationJpaRepository reservationJpaRepository;
@Test
void findFlightPriceAndCharge() {
//given
Integer userId = 10;
//when
List<FlightPriceAndCharge> flightPriceAndCharges = reservationJpaRepository.findFlightPriceAndCharge(userId);
//then
log.info("결과:" + flightPriceAndCharges);
}
}
간단하게 테스트 하려고했더니 바로 오류남.
보니까 테이블이 안 만들어져있네..인강처럼
'PROGRAMMING > 슈퍼코딩 강의 정리' 카테고리의 다른 글
78-1강 MySQL 제약조건 익히기 (0) | 2024.10.02 |
---|---|
77강 SQL문 JOIN 익히기 (2) | 2024.10.02 |
가이드 4강 Http쿠키 & 섹션과 jwt (0) | 2024.06.10 |
109강 가이드 3강 HTTP 캐싱과 스프링 부트 캐싱 (0) | 2024.05.27 |
106강 Spring Boot 좀 더 사용하기 wrap-up (0) | 2024.05.13 |