길벗 코딩 자율 학습단 5주차
테스트
| 프로그림의 품질을 검증하는 것; 의도대로 프로그램이 잘 동작하는지 확인하는 과정
테스트 코드
1. 예상 데이터 작성
2. 실제 데이터 획득
3. 예상 데이터와 실제 데이터 비교해 검증
테스트 주도 개발 (TDD, Test Driven Development)
| 일단 테스트 코드를 만든 후 이를 통과하는 최소한의 코드부터 시작해 점진적으로 코드를 개선 및 확장해 나가는 개발 방식
1. 실패하는 테스트 코드 추가
2. 테스트 성공을 위한 최소한의 코드 작성
3. 테스트 통과를 유지하며 코드 개선
@SpringBootTest
해당 클래스를 스프링 부트와 연동해 통합 테스트 수행하겠다고 선언 → 테스트 코드에서 스프링 부트가 관리하는 다양한 객체 주입받을 수 있음
@Test
해당 메서드가 테스트를 위한 코드라고 선언
Arrays.asList()
입력된 배열 또는 2개 이상의 동일한 타입 데이터를 정적 리스트(고정 크기)로 만들어 반환
assertEquals(x, y)
JUnit5에서 제공하는 메서드로, 예상 데이터(x)와 실제 데이터(y)를 비교해 일치하면 테스트 통과
JpaRepository
ListCrudRepository(CrudRepository - 엔티티의 CRUD 기능 제공) + ListPagingAndSortingRepository(PagingAndSortingRepository - 엔티티의 페이징 및 정렬 기능 제공)
*) sql에서 한줄 주석은 --(하이픈 2개)로, 여러 줄 주석은 /* */형태로 처리
네이티브 쿼리 메서드(native query method)
직접 작성한 SQL 쿼리를 리파지터리 메서드로 실행할 수 있게 해줌
1. @Query 어노테이션 이용
@Query
: JPQL이라는 객체 지향 쿼리 언어를 통해 복잡한 쿼리 처리 지원
* nativeQuery = true * : 기존 SQL문 그대로 사용 가능!
** SQL의 WHERE 절 조건 쓸 때, 매개변수 앞에는 꼭 콜론(:) 붙여주어야함
2. orm.xml 파일 이용
네이티브 쿼리 XML
● 기본 파일 경로 = META-INF > orm.xml
@DataJpaTest
해당 클래스를 JPA와 연동해 테스트하겠다는 선언
@DisplayName
테스트 이름을 붙일때 메서드 이름은 그대로 둔 채 테스트 이름을 바꾸고 싶을 때 사용
생성 메서드 (ex. 정적 팩토리 메서드)
● public static 으로 선언
● 객체 생성 없이 호출 가능
Stream
컬렉션이나 리스트에 저장된 요소들을 하나씩 참조하며 반복 처리할 때 사용
.map(a -> b) : map() 메서드
스트림에서 요소를 꺼내 조건에 맞게 변환 가능
:: 스트림의 각 요소(a)를 꺼내 b를 수행한 결과로 매핑
.collect(Collectors.tolist()) : collect() 메서드
스트림 데이터를 리스트 자료형으로 반환
스트림의 특징
● 원본 데이터를 읽기만 하고 변경하지 않는다
● 정렬된 결과를 컬렉션이나 배열에 담아 반환할 수 있다
● 내부 반복문으로, 반복문이 코드상에 노출되지 않는다
@JsonProperty("키_이름")
해당 키와 변수가 자동으로 매핑
→ JSON 데이터의 키 이름과 이를 받아 저장하는 DTO에 선언된 필드의 변수명이 다를 경우 이용
출처
https://www.yes24.com/Product/Goods/119952151
코딩 자율학습 스프링 부트 3 자바 백엔드 개발 입문 - 예스24
스프링 부트 백엔드 개발,실습 문턱을 낮추고 자신 있게 시작하자!스프링 부트를 처음 접하는 입문자와 이미 공부했지만 부족하다고 느끼는 분들을 위한 책입니다. 게시판을 만들며 클라이언트
www.yes24.com