Study/Spring
[스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해1 - 예제 만들기(주문과 할인 도메인 실행과 테스트)
black6765
2022. 12. 6. 20:50
OrderApp
package hello.core;
import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import hello.core.order.Order;
import hello.core.order.OrderService;
import hello.core.order.OrderServiceImpl;
public class OrderApp {
public static void main(String[] args) {
MemberService memberService = new MemberServiceImpl();
OrderService orderService = new OrderServiceImpl();
Long memberId = 1L;
Member member = new Member(memberId, "memberA", Grade.VIP);
memberService.join(member);
Order order = orderService.createOrder(memberId, "itemA", 10000);
System.out.println("order = " + order.toString());
}
}
- main을 이용하여 테스트
OrderServiceTest
package hello.core.order;
import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
public class OrderServiceTest {
MemberService memberService = new MemberServiceImpl();
OrderService orderService = new OrderServiceImpl();
@Test
void createOrder() {
// primitive type인 long으로 해도 되지만, 그러면 null이 들어갈 수 없음
Long memberId = 1L;
Member member = new Member(memberId, "memberA", Grade.VIP);
memberService.join(member);
Order order = orderService.createOrder(memberId, "itemA", 10000);
// org.assertj.core.api를 사용해야 .을 이용한 메소드 체인을 사용 가능
Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000);
}
}
전체 테스트
- test.java.hello.core에서 Run test
- 전체 테스트가 실행 됨
- CoreApplicationTest처럼 @SpringBootTest 어노테이션이 붙어있으면 스프링을 띄우기 떄문에 오래 걸림
- 단위 테스트를 잘 짜는 것이 중요
- 단위 테스트 수 천개가 있어도 몇 초만에 끝남
- 여기서 단위 테스트는 스프링이나 컨테이너의 도움 없이 순수하게 자바 코드로 테스트 하는 것
※ 본 게시글은 인프런의 스프링 핵심 원리 - 기본편(김영한)을 수강하고 정리한 내용입니다.