1. 비즈니스 요구사항 정리
- 데이터 : 회원ID, 이름
- 기능 : 회원 등록, 조회
- 가상의 시나리오 (DB 선정되지 않음)
2. 웹앱의 계층구조
- 컨트롤러 : 웹MVC의 컨트롤러
- 서비스 : 핵심 비즈니스 로직을 구현한 계층
- 리포지토리 : DB에 접근, 도메인 객체를 DB에 저장하고 관리
- 도메인 : 비즈니스 도메인 객체
3. 클래스의 의존관계
- MemberService : 서비스 구현
- MemberRepository : 인터페이스
- MemoryMemberRepository : 메모리모드로 메모리에 저장해서 DB를 대신하는 구현체
4. 회원 도메인과 리포지토리 만들기
- /domain/Member.class 에 멤버객체를 만들어줌
- /repository/MemberRepository를 인터페이스로 만든다
- /repository/MemoryMemberRepository.class 구현체를 만든다.
- 구현체를 아래와 같이 수정해서 구현해본다
5. 테스트케이스
- JUnit 프레임워크로 테스트를 진행한다.
- 모든 테스트케이스는 순서와 관련 없이 독립적이어야 한다.
- `src/test/java` 하위 폴더에 생성한다.
- 클래스이름Test 라고 짓는게 국룰이라고 한다.
- 이런식으로 작성해주면 된다.
- @Test 어노테이션을 붙여서 작성해주고 ExpressJS 에서 했던 단위테스트랑 비슷하다.
- assertThat은 Assertions를 import 할 때 option+Enter로 static import 해주면 사용 가능. 아래 참조
- findByName도 테스트케이스를 작성해준다.
- findByAll도 테스트케이스를 작성해준다.
- 그 전에 afterEach를 이용해서 repository의 clearStore 메소드를 실행시켜준다. (당연히 클래스에 추가해줘야한다)
- 이렇게 findAll() 까지 테스트케이스를 작성하고 마무리한다.
- 터미널에 ./gradlew test 로 한번에 테스트케이스를 실행해볼 수 있다.
- 패키지의 우클릭으로 테스트케이스를 실행해볼 수도 있다.
'Backend - Java Spring > Spring Core 핵심원리(완)' 카테고리의 다른 글
[Spring 김영한] 단축키 설정 (1) | 2024.02.12 |
---|---|
[Spring 김영한] SpringBoot 공부를 위한 세팅 (0) | 2024.02.11 |
[Spring 김영한] 기본예제 만들어보기 (서비스) (0) | 2023.11.21 |
[Spring 김영한] Spring 웹개발 기초 (0) | 2023.11.10 |
[Spring 김영한] Java Spring 시작하기 (0) | 2023.11.10 |
댓글