테스트와 웹 애플리케이션 구조
김영한님의 스프링부트 강의를 듣고 작성했습니다.
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세
www.inflearn.com
웹 애플리케이션의 계층 구조
컨트롤러: 웹 MVC의 컨트롤러 역할
서비스: 핵심 비즈니스 로직 구현
리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리
도메인: 비즈니스 도메인 객체
* Optional<class> 객체
null을 반환할 수도 있는 객체를 리턴할 때 Optional로 래핑해주면 좋다.
래핑해줄 경우 Optional객체에서 제공하는 여러 메소드를 이용 할 수 있어 null체크를 하지 않아도 된다.
테스트 케이스 작성
클래스를 작성하고 나서 main부터 실행하면 준비하는데 시간이 오래 걸리고 반복 실행하기 어렵다는 단점이 남게 된다.
테스트 케이스를 작성해 테스트를 진행한다면 기능을 만들고 바로바로 실행 여부를 확인 할 수 있게 된다.
테스트는 각각 독립적으로 실행되어야 한다. 테스트 순서에 의존관계가 있는 것은 좋은 테스트가 아니다.
@AfterEach: 한꺼번에 여러 테스트를 진행하면 메모리 DB에 직전 테스트의 결과가 남을 수 있는데 이렇게 되면 다음 테스트가 실패할 가능성이 있다. @AfterEach를 사용하면 각 테스트가 종료될 떄 마다 이 기능을 실행하는데 이 때 메모리 DB의 데이터를 삭제해주면 된다.
@BeforeEach: 각 테스트의 실행 전에 호출되는 메소드이다. 위에서는 Dependency Injection을 수행한다.
* 테스트를 수행할 때 주석으로 given(변수 값 주어졌을 때), when(수행하고자 하는 컨디션 실행), then(Assertion으로 맞는지 확인)으로 나누어 테스트를 진행하면 알아보기 편하다
인텔리제이 단축키들
단축키 | 설명 |
Alt + Enter | 임포트 |
Alt + 화살표 | 다음 탭으로 이동 |
Shift + Enter | 다음 줄로 이동 |
Ctrl + Shift + V | 변수 추출 |
Shift + F6 | 이름 바꾸기 |
Ctrl + E | 최근에 실행했던 파일 확인 |
Ctrl + B | 심볼의 선언으로 이동 |
Ctrl + Shift + Enter | 현재 구문 완성 |
Ctrl + Shift + Alt + T: | 선택 영역 위에서 단축키를 누르면 사용 가능한 리팩토링 옵션이 표기됨 |