본문 바로가기
개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편

[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 회원 도메인 실행과 테스트 / 인프런 김영한 스프링 핵심 원리 기본편

by easpop 2023. 2. 11.
728x90
반응형

이번 시간에는 지난 시간에 개발한 회원 도메인을 정상 동작하는지 실행하는 시간을 가졌다.

 

hello.core안에 MemberApp 클래스를 생성해준다.

 

new MemberServiceImpl을 통해서 구현체 객체를 지정해주고 memberService로 인스턴스를 생성한다.

 

그리고 member 객체에 아이디값을 1번 (1L, 롱타입이기 때문에 1뒤에 L을 넣어준다)을 넣어주고,

이름은 "memberA", 등급은 Grade.VIP를 넣어준다.

그리고 memberService.join을 통해서 회원가입을 해준다.

 

findMember 테스트를 하기 위해서 위에서 만든 객체의 이름인 1L을 findById의 파라미터로 넣어준다.

 

그리고 나서, println으로 member의 이름과 findMember의 이름을 찍어본다~~

반응형

회원 가입한 member 객체의 이름인 "memberA"가 정상 출력되었고,

findById 메소드를 통해서 1L이라는 id로 검색한 결과의 이름인 "memberA"가 정상 출력된 것을 확인할 수 있다!

이렇게 스프링이 전혀 관련되지 않은 순수 자바 코드로 개발을 했다.

콘솔에 매번 찍으면서 테스트하는 것은 한계가 있기 때문에, junit이라는 테스트 프레임 워크를 사용할 것이다.

 

test 하위 폴더에서 테스트를 위한 member 패키지를 생성한다.

나중에 빌드를 하게 되면, main 패키지의 코드들만 포함되고, test 코드들은 운영환경에 배포되지 않고 빠진다!

 

MemberServiceTest 클래스를 생성한다.

 

테스트 코드를 given(어떤 상황이 주어졌을 때), when(이것을 실행했을 때), then(결과는 이렇게 될 것이다)

3단계로 나누어서 로직을 짠다.

그리고 Assertions.asserThat을 통해서 member 객체와,

findById 메소드를 실행한 결과인 findMember 객체가 동일한지 isEqualTo를 통해서 테스트를 실행한다~~

테스트 결과 정상 작동~~!

 

하지만 MemberServiceImpl 클래스의 문제점이 있는데....

MemberRepository도 의존하고, new 연산자에서 MemoryMemberRepository도 의존하고 있기 때문에,

인터페이스와 구현체 둘 다 의존하고 있는 코드가 되었기 때문에 SOLID 원칙 중에서 DIP를 위반하고 있다~~

SOLID 원칙이 뭔지 모르시는 분은 아래에 제가 작성했던 글을 참고해주세요!

 

2023.02.06 - [개발자 공부 - 인프런 온라인 강의/스프링 핵심 원리 - 기본편] - [섹션 1. 객체 지향 설계와 스프링] 좋은 객체 지향 설계의 5가지 원칙(SOLID)/ 인프런 김영한 스프링 핵심 원리 기본편

 

[섹션 1. 객체 지향 설계와 스프링] 좋은 객체 지향 설계의 5가지 원칙(SOLID)/ 인프런 김영한 스프

이번 시간에는 좋은 객체 지향 설계 5가지 원칙(SOLID)에 대해서 알아보는 시간이었다. SOLID는 클린 코드로 유명한 로버트 마틴이 정리한 좋은 객체 지향 설계의 5가지 원칙이다. S : 단일 책임 원칙

easpop.tistory.com

728x90
반응형

'개발자 공부 - 인프런 온라인 강의 > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글

[섹션 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용] 새로운 할인 정책 개발 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.16
[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 주문과 할인 도메인 실행과 테스트 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.16
[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 주문과 할인 도메인 설계 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.14
[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 주문과 할인 도메인 설계 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.12
[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 회원 도메인 개발 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.11
[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 비즈니스 요구사항과 설계 & 회원 도메인 설계 / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.07
[섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기] 프로젝트 생성 (+intelliJ 자바 버전 변경) / 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.07
[섹션 1. 객체 지향 설계와 스프링] 객체 지향 설계와 스프링 (+ 스프링 프레임 워크 탄생 배경)/ 인프런 김영한 스프링 핵심 원리 기본편  (0) 2023.02.06

댓글