Kim-Baek 개발자 이야기

[스프링 핵심원리] 13. 주문과 할인 도메인 실행과 테스트 본문

개발/Spring

[스프링 핵심원리] 13. 주문과 할인 도메인 실행과 테스트

김백개발자 2021. 10. 1. 15:40
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅

주문과 할인 도메인을 만들었으니 이제 제대로 동작하는지 테스트를 해볼 차례이다.

package core.order;

import core.order.member.*;
import core.order.member.MemberService;
import core.order.member.MemberServiceImpl;
import core.order.order.Order;
import core.order.order.OrderService;
import core.order.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);
    }
}

메인 메소드를 위와 같이 하나 새로 만들고 돌려보도록 하자

이렇게 결과가 나오는데 정상적으로 출력되는 것을 볼 수 있다. 메인 메소드를 통해서 테스트 하는 것은 역시나 마찬가지로 좋은 방법이라고 할 수는 없다.

package core.order.order;

import core.order.member.*;
import core.order.member.MemberService;
import core.order.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() {
        Long memberId = 1L;
        Member member = new Member(memberId, "memberA", Grade.VIP);
        memberService.join(member);

        Order order = orderService.createOrder(memberId,"itemA", 10000);
        Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000);
    }
}

Test 패키지에 주문 서비스 테스트 클래스를 하나 만들도록 하자. 메인메소드에서 했던 로직과 거의 동일하지만 junit을 통해서 검증을 한다는 것이 다르다.

이렇게 되면 값이 변경이 되면 테스트에서 실패하기 때문에 훨씬 정확하게 테스트를 할 수 있다.

실행시켜 보면 41ms 로 정말 빠르게 테스트가 성공하는 것을 알 수 있다. 스프링부트 테스트가 아니라서 자바만 사용하기 때문에 빠르다. 나중에 스프링부트 테스트를 사용하게 되면 다양한 의존성들을 가져오느라 더 느릴 수 있다.

소스 코드 : https://github.com/bgc8214/spring-core/tree/step4


반응형
Comments