inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 기능 테스트

MemberServiceTest 도중 오류

1277

짱아깨비

작성한 질문수 1

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

테스트 하려고 하면 자꾸 이렇게 뜨네요..ㅠ

package jpabook.jpashop.service;

import jpabook.jpashop.domain.Member;
import jpabook.jpashop.repository.MemberRepository;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import static org.junit.jupiter.api.Assertions.*;
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
class MemberServiceTest {

    @Autowired MemberService memberService;
    @Autowired
    MemberRepository memberRepository;

    @Test
    public void 회원가입() throws Exception {
        //given
        Member member = new Member();
        member.setName("kim");
        //when
        Long saveId = memberService.join(member);
        //then
        assertEquals(member, memberRepository.findOne(saveId));

    }

    @Test
    public void 중복_회원_예제() throws Exception{
        //given

        //when

        //then
    }
}
package jpabook.jpashop.domain;


import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.List;

@Entity
@Getter
@Setter
public class Member {
    @Id @GeneratedValue
    @Column(name = "member_id")
    private Long id;

    private String name;

    @Embedded
    private Address address;

    @OneToMany(mappedBy = "member")
    private List<Order> orders = new ArrayList<>();



}
package jpabook.jpashop.service;


import jpabook.jpashop.domain.Member;
import jpabook.jpashop.repository.MemberRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(readOnly = true)
public class MemberService {

    @Autowired
    private MemberRepository memberRepository;

    //회원 가입
    @Transactional
    public Long join(Member member){
        validateDuplicateMember(member);
        memberRepository.save(member);
        return member.getId();
    }

    private void validateDuplicateMember(Member member) {
        //EXCEPTION
        List<Member> findMembers = memberRepository.findByName(member.getName());
        if (!findMembers.isEmpty()){
            throw new IllegalStateException("이미 존재하는 회원입니다.");
        }
    }
    //회원 전체 조회
    public List<Member> findMembers() {
        return memberRepository.findAll();
    }

    public Member findOne(Long memberId){
        return memberRepository.findOne(memberId);
    }

}

 

아 수정해서 올렸습니다!

/Users/changha/Documents/Infrun/jpashop/src/main/java/jpabook/jpashop/service/MemberService.java:24: error: cannot find symbol

return member.getId();

^

symbol: method getId()

location: variable member of type Member

java spring 웹앱 spring-boot jpa

답변 2

0

y2gcoder

정확한 것은 MemberService의 코드를 올려주셔야 확실하겠지만

오류 내용만 보고 판단했을 때는 Member의 import 가 잘못되어 getId()를 못찾은 것으로 보입니다. Member를 저희가 만든 Member로 import했는지 확인해주시고, 잘 모르시겠다면 MemberService 전체 코드를 보여주시면 감사하겠습니다 :)

0

짱아깨비

MemberService import부분도 member제대로 돼있는데 왜 이러는지 잘 모르겠네요 ㅠ

강의 초반부에 테스트 했을 때도 이 오류 떠서 그냥 테스트는 안하고 applcation Run시키니까 작동은 됐습니다

0

y2gcoder

일단 강의 자료 기준으로 생성자 주입을 아직 반영하지 않으신 것 빼고는 별다른 점은 없어보입니다. 번거로우시겠지만 롬복이 기능하지 않고 있나 싶기도 해서 intellij 설정에 들어가서 annotation process로 검색하셔서 해당 기능을 켜주고 다시 테스트해주시겠습니까? 그래도 안된다면 직접 제가 코드를 봐야 될 것 같습니다 :)

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.

구글 드라이브 업로드 방법 링크

주의: 업로드시 권한 문제 꼭 확인해주세요

추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.
2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

0

짱아깨비

https://drive.google.com/file/d/1_Yz3gsnExhOwdSj3DDR42eB0gzJXmifL/view?usp=sharing

  1. test폴더의 MemberServiceTest 클래스에 가서 회원가입 메서드를 실행시킵니다.

  2. 회원가입 메서드를 실행시키면 위와 같은 에러가 뜹니다

감사합니다!

1

y2gcoder

보내주신 프로젝트 코드 살펴봤습니다.

MemberServiceTest 를 통과하게 만들기 위해서 2가지가 필요했습니다.

1) build.gradle 수정
2) 루트 패키지에 있는 MemberRepository 삭제

2)은 그냥 삭제하시면 될 것 같고

1) 에서 lombok 추가를 강의자료와는 다른 방법으로 해주고 계셨고, 그로 인해 테스트를 위한 컴파일 시 @Getter에서 getter 메서드를 만들어내지 못해 해당 에러가 계속 발생 중이었습니다.

변경 전

image

변경 후

image

이렇게 바꿔주시고, 루트 패키지에 존재하는 MemberRepository를 삭제해주시면 될 것 같습니다.

 

0

짱아깨비

정말 감사합니다! 해결됐습니다!!

0

y2gcoder

안녕하세요, 전창하 님. 공식 서포터즈 y2gcoder 입니다.

해당 내용만으로는 어떤 문제가 생겼는지 파악하기가 어렵습니다 :)

아마 오류 내용 업로드를 누락하신 것 같은데 오류를 볼 수 있는 내용도 같이 올려주시면 감사하겠습니다.

감사합니다.

0

짱아깨비

수정해서 올렸습니다!

sdk 설정 오류

0

53

2

오탈자 - @Transactional

0

56

1

src/test/resources 테스트 경로 문제

0

50

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

64

1

MemberRepositoryTest 실행오류

0

81

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

183

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

140

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

51

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

60

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

102

1

멤버서비스테스트 부분에서 막힙니다.

0

165

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

116

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

120

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

114

1

24분 27초 연관관계 편의 메서드 위치

0

113

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

109

2

빌드 툴, Gradle

0

59

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

77

2

Repository에서 EntityManager 주입 방식 차이

0

90

1

롬복과 사용자 정의 setter 메서드

0

72

1

주문 목록 조회 fetch join 질문드립니다

0

82

1

dirty checking 질문드립니다.

0

83

1

동시성 관련 질문입니다

0

75

1