이번 시간에는 지난 포스팅에 개발한 코드들을 테스트를 해보았다.
package hello.core;
import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
public class MemverApp {
public static void main(String[] args) {
MemberService memberService = new MemberServiceImpl();
Member member = new Member(1L, "memberA", Grade.VIP);
memberService.join(member);
Member findMember = memberService.findMember(1L);
System.out.println("new member = " + member.getName());
System.out.println("find member = " + findMember.getName());
}
}
hello.core 밑에 메인함수를 가지는 클래스를 생성하고
멤버객체를 1,memberA,VIP를 주고 생성한다(생성자를 통하여)
그리고 가입기능을 실행하고
그리고 findMember 변수를 이용하여 아이디값이 1인 객체를 가리키게하고
결국 같은 객체를 가리키게 된다.
이것을 출력문을 통해 눈으로 확인 할 수 있다.
하지만 이렇게 직접 눈으로 다 확인할 수는 없는 노릇이기에
Junit이란 테스트 프레임워크를 사용해보자!
package hello.core.member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
public class MemberServiceTest {
MemberService memberService = new MemberServiceImpl();
@Test
void join(){
//given
Member member = new Member(1L,"memberA",Grade.VIP);
//when
memberService.join(member);
Member findMember = memberService.findMember(1L);
//then
Assertions.assertThat(member).isEqualTo(findMember);
}
}
test/hello.core/member/MemberServiceTest를 생성해준다.
위의 코드랑 다른점은
검증하는 부분이다.
Assertions를 이용하여 member와 findMember를 비교하여 같은지 확인한다.
테스트에 성공하였다. 눈으로 확인하는거 보다 좋고 테스트가 터졌을때 오류를 확인할 수 있다.
현재 회원 도메인 설계의 문제점이 있다.
다른 저장소로 변경할 때 OCP원칙을 잘 준수할까?
DIP를 잘 지키고 있을까?
이게 결국 의존관계가 인터페이스 뿐만 아니라 구현까지 모두 의존하는 문제가 있다.
의존성 주입을 해줘야할 것같다!
구체적인 문제는 차차 고쳐가도록 할 것이다.!
'웹프로그래밍 > Spring 핵심 원리' 카테고리의 다른 글
7. 주문과 할인 도메인 개발 (0) | 2021.07.08 |
---|---|
6. 주문과 할인 도메인 설계 (0) | 2021.07.08 |
4. 회원 도메인 개발 (0) | 2021.07.06 |
3. 회원 도메인 설계 (0) | 2021.07.06 |
2. 비즈니스 요구사항과 설계 (0) | 2021.07.06 |