본문 바로가기

SPRING/Spring

[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기]주문과 할인 도메인 실행과 테스트

public class OrderApp {
// 'OrderApp'라는 public 클래스를 선언합니다.

    public static void main(String[] args) {
    // 'main' 메서드를 선언합니다. 이 메서드는 애플리케이션의 진입점으로, String 배열을 매개변수로 받습니다.

        MemberService memberService = new MemberServiceImpl();
        // 'MemberService' 인터페이스의 구현체인 'MemberServiceImpl'을 인스턴스화하고, 'memberService'라는 변수에 할당합니다.

        OrderService orderService = new OrderServiceImpl();
        // 'OrderService' 인터페이스의 구현체인 'OrderServiceImpl'을 인스턴스화하고, 'orderService'라는 변수에 할당합니다.

        Long memberId = 1L;
        // Long 타입의 'memberId' 변수를 선언하고, 값 1L을 할당합니다. 이는 회원 식별자로 사용됩니다.

        Member member = new Member(memberId, "member1", Grade.VIP);
        // 'Member' 클래스의 인스턴스를 생성합니다. 이 인스턴스는 ID가 'memberId', 이름이 "member1", 등급이 'Grade.VIP'인 회원을 나타냅니다.

        memberService.join(member);
        // 'memberService'의 'join' 메서드를 호출하여, 'member' 객체를 회원으로 등록합니다.

        Order order = orderService.createOrder(memberId, "item1", 10000);
        // 'orderService'의 'createOrder' 메서드를 호출하여, 'memberId'로 식별되는 회원에 대한 주문을 생성합니다. 주문 항목 이름은 "item1"이고, 가격은 10000입니다.

        System.out.println("order =" + order);
        // 'System.out.println'을 사용하여 생성된 'order' 객체의 정보를 출력합니다. 'Order' 클래스의 'toString' 메서드에 의해 포맷된 문자열이 출력됩니다.
    }
}
public class OrderServiceTest {
// 'OrderServiceTest'라는 public 클래스를 선언합니다. 이 클래스는 주문 서비스의 기능을 테스트합니다.

    MemberService memberService = new MemberServiceImpl();
    // 'MemberService' 인터페이스의 구현체인 'MemberServiceImpl'의 인스턴스를 생성하고, 이를 'memberService'라는 변수에 할당합니다. 이 인스턴스는 회원 관련 서비스를 제공합니다.

    OrderService orderService = new OrderServiceImpl();
    // 'OrderService' 인터페이스의 구현체인 'OrderServiceImpl'의 인스턴스를 생성하고, 이를 'orderService'라는 변수에 할당합니다. 이 인스턴스는 주문 관련 서비스를 제공합니다.

    @Test
    // '@Test' 어노테이션은 이 메서드가 JUnit에 의해 실행되는 테스트 메서드임을 나타냅니다.
    void createOrder() {
    // 'createOrder' 테스트 메서드를 선언합니다. 이 메서드는 주문 생성 기능을 테스트합니다.

        Long memberId = 1L;
        // Long 타입의 'memberId' 변수를 선언하고, 값 1L을 할당합니다. 이는 테스트에 사용될 회원의 ID입니다.

        Member member = new Member(memberId, "member1", Grade.VIP);
        // 'Member' 클래스의 인스턴스를 생성합니다. 이 인스턴스는 ID가 'memberId', 이름이 "member1", 등급이 'Grade.VIP'인 회원을 나타냅니다.

        memberService.join(member);
        // 'memberService'의 'join' 메서드를 호출하여, 위에서 생성한 'member' 객체를 회원으로 등록합니다.

        Order order = orderService.createOrder(memberId, "item1", 10000);
        // 'orderService'의 'createOrder' 메서드를 호출하여, 'memberId'로 식별되는 회원에 대한 주문을 생성합니다. 주문 항목 이름은 "item1"이고, 가격은 10000입니다.

        Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000);
        // 'Assertions' 라이브러리의 'assertThat' 메서드를 사용하여, 생성된 'order' 객체의 할인 금액을 검증합니다. 이 테스트는 할인 금액이 1000원인지 확인하여 주문 생성 로직의 정확성을 평가합니다.
    }
}