본문 바로가기

SPRING/Spring

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

package hello.core.member;
// 이 줄은 패키지 이름을 선언합니다. 패키지는 Java에서 관련된 클래스와 인터페이스를 조직화하는 데 사용됩니다.

public class MemberApp {
// 이 줄은 'MemberApp'이라는 public 클래스를 선언합니다.

    public static void main(String[] args) {
    // Java 애플리케이션의 진입점인 'main' 메서드를 선언합니다. 이 메서드는 'String' 배열을 매개변수로 받으며, 프로그램이 실행될 때 실행됩니다.

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

        Member member = new Member(1L, "member1", Grade.VIP);
        // 'Member' 클래스의 인스턴스를 생성합니다. 이때 생성자에 ID는 '1L', 이름은 "member1", 등급은 'Grade.VIP'로 지정합니다.

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

        Member findMember = memberService.findMember(1L);
        // 'memberService'의 'findMember' 메서드를 호출하여 ID가 '1L'인 회원의 정보를 조회하고, 그 결과를 'findMember' 변수에 저장합니다.

        System.out.println("new member = " + member.getName());
        // 콘솔에 "new member = "라는 문자열과 함께 'member' 객체의 'getName()' 메서드를 호출한 결과를 출력합니다. 이는 등록된 회원의 이름을 출력합니다.

        System.out.println("find Member = " + findMember.getName());
        // 콘솔에 "find Member = "라는 문자열과 함께 'findMember' 객체의 'getName()' 메서드를 호출한 결과를 출력합니다. 이는 조회된 회원의 이름을 출력합니다.
    }
}
package hello.core.member;
// 이 줄은 패키지 이름을 선언합니다. 패키지는 Java에서 관련된 클래스와 인터페이스를 조직화하는 데 사용됩니다.

import org.assertj.core.api.Assertions;
// Assertions 클래스를 import합니다. 이 클래스는 assertj라는 라이브러리의 일부로, 테스트 검증을 위해 다양한 assertion 메소드를 제공합니다.

import org.junit.jupiter.api.Test;
// JUnit 5의 Test 어노테이션을 import합니다. 이 어노테이션은 메소드가 테스트 메소드임을 나타냅니다.

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

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

    @Test
    // '@Test' 어노테이션은 이 메소드가 JUnit에 의해 실행되는 테스트 메소드임을 나타냅니다.
    void join() {
    // 'join'이라는 테스트 메소드를 선언합니다.

        //given
        Member member = new Member(1L, "member1", Grade.VIP);
        // 테스트 상황 설정: 'Member' 클래스의 인스턴스를 생성하며, 생성자에 ID는 '1L', 이름은 "member1", 등급은 'Grade.VIP'로 지정합니다.

        //when
        memberService.join(member);
        // 테스트 실행: 'memberService'의 'join' 메서드를 호출하여, 위에서 생성한 'member' 객체를 등록합니다.
        Member findMember = memberService.findMember(1L);
        // 테스트 실행: 'memberService'의 'findMember' 메서드를 호출하여 ID가 '1L'인 회원의 정보를 조회하고, 그 결과를 'findMember' 변수에 저장합니다.

        //then
        Assertions.assertThat(member).isEqualTo(findMember);
        // 테스트 검증: 'Assertions' 라이브러리의 'assertThat' 메서드를 사용하여 'member' 객체와 'findMember' 객체가 동일한지 검증합니다.
    }
}