12会員サービステスト


  • バージョンにはテストコードは含まれていません.
  • のテスト関数を韓国語に設定することができます.
  • 静的は、インスタンスに関係なくクラスレベルです.
  • が静的に消えた場合、各インスタンスは複数のリポジトリを作成します.
  • に質問
    MemberService.JAvaのmemberRepositoryとMemberServiceTest.JAvaとmemberRepositoryの異なるリポジトリ:異なるインスタンス(現在、静的キーワードはMapstoreの前にあり、同じデバイスとして使用されていますが、staticがない場合、異なるデバイスを生成する際に問題が発生します)

    ソリューション
    外部から挿入するように設計:メモリ・サービスから直接オブジェクトを新規作成しません

    同じメモリを使用
    public class MemberService {
        private final MemberRepository memberRepository;
    
        public MemberService(MemberRepository memberRepository) {
            this.memberRepository = memberRepository;
        }
    }
    オブジェクトを作成せずにmemberRepositoryを直接新規作成し、外部から入れるものを依存注入と呼びます.
  • レジストリ
  • の作成
    @BeforeEach
        public void berforeEach() {//테스트가 실행할 때마다 생성
            memberRepository = new MemoryMemberRepository();
            memberService = new MemberService(memberRepository);
        }
  • 試験検証方法名は、ハングル
  • であってもよい
  • 「与えられた-when-then」構造
  • @Test
        void 회원가입() {//join
            //given 뭔가 주어졌을 때: 데이터
            Member member = new Member();
            member.setName("hello");
    
            //when 이게 실행됐을 때: 검증부분
            Long saveId = memberService.join(member);
    
            //then 결과가 이렇게 되어야 한다: 검증확인
            Member findMember = memberService.findOne(saveId).get();
            assertThat(member.getName()).isEqualTo(findMember.getName());
        }
  • 冗長異常
  • @Test
        public void 중복_회원_예외(){
            //given
            Member member1 = new Member();
            member1.setName("spring");
    
            Member member2 = new Member();
            member2.setName("spring");
    
            //when
            memberService.join(member1);
            //방법1
            try {
                memberService.join(member2);//같은 이름으로 등록이 되면 fail
                fail();
            } catch (IllegalStateException e) {
                assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
            }
            //방법2
            assertThrows(IllegalStateException.class, () -> memberService.join(member2));//member2를 넣으면 앞에 예외가 터져야함: 성공
            //방법3
            IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));
            assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
            //then
        }
    春入門12(金英漢)