반응형

백엔드 개발의 시작이라고도 볼 수 있는 회원 관리 예제 실습을 진행했다.

  1. 웹 애플리케이션 개발 순서 (완료)
  2. 스프링 프로젝트 생성 (완료)
  3. 스프링 부트로 웹 서버 실행 (완료)
  4. 회원 도메인 개발(진행)
  5. 웹 MVC 개발
  6. DB 연동 - JDBC, JPA, 스프링 데이터 JPA
  7. 테스트 케이스 작성

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

우선 동작하는 방법을 알기 위해 요구사항은 간단하게 설정한다.

데이터 : 회원 ID, 이름

기능 : 회원 등록, 조회

 

2)회원 도메인과 리포지토리 만들기

해당 package들을 생성하여 MemberRepository 인터페이스와  회원 정보 등록 및 조회하는 MemoryMemberRepository를 만들어 준다. 여기서 굳이 MemberRepository를 메소드가 아닌 인터페이스로 구현하는 이유는 다형성 때문이다.

어떤 객체 A가 부모 B를 상속받았을 때 A는 B라고 할 수도 있고, A는 A라고 할 수도 있다. 이때 만약에 C가 A를 사용하고 있었다고 가정했을 때, 추후 C가 A 대신 D를 사용하도록 변경하게 된다면, 별다른 수정 없이 A 대신 D를 상속받도록 수정만 하면 된다! 

이처럼 인터페이스는 다형성을 이용하여, 코드를 수정할 부분을 줄일 수 있는 효과를 얻을 수 있다.

 

3)회원 리포지토리 테스트 케이스 작성(junit 테스트 프레임워크로)

개발한 기능을 테스트 하려면 메인 메서드나 웹앱 컨트롤러를 통해 해당 기능을 실행하여 알아볼 수도 있지만, 가장 편리한 것은 JUnit이라는 프레임워크로 테스트를 실행하는 방법이다.

MemoryMemberRepositoryTest.java

오픈소스를 진행하면서 단위 테스트를 작성할 일이 처음 있었는데, 이번 강의에도 테스트의 중요성을 강조하고 있다. 오픈소스 멘토 개발자님이 말씀해주신 것과 동일한 이유의 강조로 얼마나 중요한지 더욱 깨닫고 신뢰가 가게 되었다. 특히, 여기서는 실습으로 개발 후 테스트 메소드를 작성했지만, 진정한 TDD는 테스트 작성 후 개발하는 것을 알아둬야한다.

보통 취준생의 프로젝트로는 혼자 하거나, 소규모 프로젝트가 많으므로 TDD를 사용하는 일이 잘 없을 수도 있지만, 규모가 큰 프로젝트 일수록, TDD가 없으면 굉장히 개발이 어려워질만큼 중요하다. 그러므로 작은 규모의 프로젝트라도 TDD에 대해 미리 학습해 놓는다면 추후 많은 도움이 될 것이라고 생각된다.

해당 실습을 진행하면서 단위 테스트나 클래스 전체 테스트 등 정상적으로 실행되는 것을 이해할 수 있었고, 한 가지 주의할 점은 @AfterEach annotation이다. 해당 메소드는 repository에 저장된 데이터를 clear 시켜주는 것이다. 

왜냐하면, 단위 테스트 작성 중 해당 사진과 같이 동일한 Member의 setName에 문자열 데이터를 설정하는 것을 볼 수 있다. 이럴 경우와 더불어, 단위 테스트는 순서 없이 개별적으로 동작하기 때문에 어떤 테스트가 먼저 실행될 지 모르기 때문에 항상 데이터 값을 초기화 시켜줘야 안전하다.

MemoryMemberRepository.java

해당 파일에 변수 store. 즉, Member를 clear 해주는 메소드를 작성 후 테스트를 할 때 호출하여 사용한다.

 

4)회원 서비스 개발

서비스 패키지를 생성하여 중복 회원 검증 및 전반적인 회원 서비스 관련된 비즈니스 로직을 작성한다.

 

5)회원 서비스 테스트

시작하기에 앞서 테스트 메소드를 자동 생성하는 단축기를 배웠다.

ctrl+shift+T

클릭하여 원하는 테스트 메소드 선택해주어 만들어주기만 하면 자동적으로 테스트 메소드 생성..!

해당 테스트도 회원 테스트와 마찬가지로 @AfterEach annotation으로 데이터베이스에 동일한 값이 누적되는 것을 방지하기 위해 clear 적용해줄 것.

추가적으로, 의존성 주입(Dependency Injection) DI에 대해서도 학습할 수 있었는데, 추후 다음 강의에서 자세히 알아볼 수 있다.!

의존성 주입으로 변경된 코드 예시

 

 

단축기 팁(윈도우)

- ctrl+F5 : Run, 

-Alt+Enter : import

-Ctrl+Shift+Enter : 자동 완성

-Ctrl+Alt+V 자동 리턴

-Ctrl+Shift+T 테스트 메소드 자동 생성

-shift + F10  이전에 실행했던 것을 실행해줌.(예를 들어 테스트 메소드를 실행했다면 또 해줌)

Ctrl+Alt+V

 

학습 내용 출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

+ Recent posts