티스토리 뷰

Web 개발

[Web] Spring Basic 3 - 백엔드 개발

코딩브론즈 2021. 12. 10. 21:19

1. 비즈니스 요구사항 정리

- 매우매우 간단히 진행할 거임.

  • 데이터 : 회원 ID, 이름
  • 기능 : 회원 등록, 조회
  • DB는 아직 정해지지 않음

- 일반적인 웹 애플리케이션 계층 구조

  • 컨트롤러 : 웹 MVC의 컨트롤러 역할
  • 서비스 : 핵심 비즈니스 로직 구현 (ex. ID 중복검사)
  • 레포지토리 : DB 접근, 도메인 객체를 DB에 저장하고 관리
  • 도메인 : 비즈니스 도메인 객체 (ex. 회원, 주문, 쿠폰 등등 주로 DB에 저장하고 관리됨)

- 클래스 의존관계

  • DB가 정해지지 않았기 때문에, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계.
  • 향후에 RDB로 할지, JPA로 할지 구체적인 기술이 선정되면 바꿔끼울것임. 따라서 인터페이스를 정의하는것.
  • 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용

 


 

2. 도메인과 레포지토리 만들기

- 객체 생성 (Member.java)

- 레포지토리 인터페이스 생성 (MemberRepository.java)

- 리포지토리 메모리 구현체 생성 (MemoryMemberRepository.java)

 


 

3. 레포지토리 테스트케이스 작성

- 테스트 케이스를 작성하는 이유 : 개발한 기능을 main 메서드를 실행하거나 컨트롤러로 실행하면 오래걸리고 여러개의 기능을 한번에 실행하기 어렵다. 자바는 JUnit이라는 프레임워크를 통해 이러한 문제를 해결한다.

- 테스트 클래스 생성

  • src/test/java 하위 폴더에 생성한다.
  • 테스트 할 클래스에Test를 붙이는게 관례이다. (MemoryMemberRepositoryTest.java)
  • 메소드에 @Test 어노테이션을 붙인다.
  • Assertions을 활용하여 데이터를 검증할 수 있다.
  • @AfterEach를 사용하여 각각의 테스트가 끝날 때마다 특정한 작업을 수행하게 할 수 있다.

 


 

4. 서비스 개발

- 레포지토리는 클래스명을 기능에 연관되도록 작명하고 서비스는 비즈니스 로직에 연관되도록 작명한다.

 


 

5. 서비스 테스트

  • @BeforeEach를 사용하여 각 테스트를 시작하기 전에 초기화해준다.

 


 

꿀팁

1.  Ctrl + Alt + V를 통해 변수를 추출할 수 있다.

2. Service나 Repository를 생성후 테스트 코드를 작성할 때, 클래스에서  Ctrl + Shift + T  를 입력하면 편하다.

테스트할 메서드를 체크박스에서 선택할 수 있다.

3. 테스트코드의 메서드는 한글로 자주 작명한다. 실제코드에 포함되지도 않고 직관적이여서 보기 편하다.

이런식으로..

4.  테스트코드를 작성할 때, given, when, then으로 나눠서 작업하면 매우 편해진다. 

물론 상황에 따라 안맞는 경우도 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함