인프런 워밍업 클럽 3주차 발자국
3주차 강의 정리
테스트의 필요성 -> 커버할 수 없는 영역 발생 방지, 감보다 코드에 의존
잘못 작성된 테스트 코드 -> 새로운 짐
올바른 테스트 코드
수동 테스트 -> 콘솔 출력 및 개발자에 의한 판단
자동 테스트 -> 안정성 및 유지보수성 증가
단위 테스트 -> 클래스 및 메소드 단위, JUnit5, AssertJ
해피 케이스와 예외 케이스 -> 경계값 테스트
테스트하기 어려운 영역을 분리하여 production code와 test code를 교체할 수 있도록 테스트 설계
TDD -> 프로덕션 코드보다 테스트 코드를 먼저 작성, Red-Green-Refactor
TDD로 엣지 케이스 발견 가능성을 높이고 복잡도가 낮은 코드 구현 가능
테스트 코드가 기능의 보조 수단이 아닌 동등한 관점에서 협력하는 관계가 될 수 있다.
기능을 설명하는 문서 -> 기능 이해 도움 & 고민의 결과물
@DisplayName
BDD -> given-when-then
통합 테스트
Library vs Framework -> 내 코드의 관점
@SpringBootTest vs @DataJpaTest
assertThat().extracting().contains()
Persistence Layer -> Data Access의 역할
Business Layer -> 비즈니스 로직 구현 역할
@Transactional vs tearDown()
3주차 강의 회고
좋았던 점
테스트에 대한 필요성에 대해 더 잘 알게 되었다.
TDD를 실제로 적용해볼 수 있었다.
Spring & JPA에 테스트를 적용할 수 있었다.
아쉬웠던 점
테스트 지점을 아는 것이 어려웠다
배운 점
테스트 도구 사용법
단위 테스트와 통합 테스트 적용 방법
앞으로 바라는 점
테스트 커버리지 도구와 CI에 테스트 적용하는 법 공부
미션
Day12
고민했던 점
IO 담당하는 부분 테스트를 어떻게 해야하는지
파일 입력을 테스트 상에서 구현하는 방법?
@MappedSuperclass
JPA에서 엔티티의 공통 속성을 정의하기위해 사용.
부모 클래스에 정의된 모든 속성은 자식 클래스의 테이블에 포함
@EntityListeners
Collectors.groupingBy()
Builder와 private 생성자
댓글을 작성해보세요.