인프런 커뮤니티 질문&답변

ycllyo님의 프로필 이미지
ycllyo

작성한 질문수

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

MemberRepositoryTest 에러 질문

해결된 질문

작성

·

413

0

package jpabook.jpashop;

import org.assertj.core.api.Assertions;
import org.junit.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.assertj.core.api.Assertions.*;
import static org.junit.Assert.*;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {

    @Autowired MemberRepository memberRepository;

    @Test
    @Transactional
    public void testMember() throws Exception {
        //given
        Member member = new Member();
        member.setUsername("memberA");

        //when
        Long saveId = memberRepository.save(member);
        Member findMember = memberRepository.find(saveId);

        //then
        assertThat(findMember.getId()).isEqualTo(member.getId());
        assertThat(findMember.getUsername()).isEqualTo(member.getUsername());

    }
}
package jpabook.jpashop;

import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Repository
public class MemberRepository {

    @PersistenceContext
    private EntityManager em;

    public Long save(Member member) {
        em.persist(member);
        return member.getId();
    }

    public Member find(Long id) {
        return em.find(Member.class, id);
    }
}
package jpabook.jpashop;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
@Getter @Setter
public class Member {

    @Id @GeneratedValue
    private Long id;
    private String username;
}

MemberRepositoryTest에서 저렇게 오류가 나는데 뭐가 잘못된걸까요ㅠ

 

package jpabook.jpashop;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class JpashopApplicationTests {

   @Test
   void contextLoads() {
   }

}

그리고 db를 실행시키지 않고 이 테스트를 돌리면 에러가 나는데 H2 db 실행여부랑 테스트 오류랑 상관이 있을까요?

답변 1

0

안녕하세요. ycllyo님, 공식 서포터즈 OMG입니다.
.

@GeneratedValue(strategy = GenerationType.SEQUENCE) 로 변경하고,

application.yml에 ddl-auto를 create로 변경하고 확인해보시겠어요?
.
감사합니다.

ycllyo님의 프로필 이미지
ycllyo
질문자

말씀하신대로 했는데 똑같이 오류가 납니다ㅠ

프로젝트 코드를 확인해봐야 알 것 같습니다.

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

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

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


감사합니다.

코드 확인해보았습니다.

해당 오류는 발생하지 않더라구요.

 

h2실행하신 후 jdbc:h2:tcp://localhost/~/jpashop

해당 url에 정상적으로 접속이 되는지도 확인이 필요합니다.

만약 정상 실행된다면 jpashop.mv.db를 완전히 삭제 후 새로 생성해주세요.

image

jpashop.mv.db 삭제 방법

(윈도우)

C/USERS/OMG(계정명) 하위에 존재하는 jpashop.mv.db 삭제

(맥)

/USERS/OMG(계정명) 하위에 존재하는 jpashop.mv.db 삭제

 

추가로 설치하신 h2 버전도 공유해주시면 확인에 많은 참고가 될 것 같습니다.

ycllyo님의 프로필 이미지
ycllyo
질문자

imageh2는 여기에 있는 윈도우 실행버전으로 설치했습니다!

파일명이 콘솔에서는 jpashop.mv.db 인데 폴더에서 보이는건 .db가 빠진게 맞는 걸까요?

말씀하신 url에 정상적으로 접속되는지 확인 후 jpashop.mv 파일 제거 후 다시 해봤는데 같은 오류가 발생하네요ㅠ...

image

이 설정은 강사님께서는 Server로 하셨는데 위에 이미지는 Embedded인게 둘다 상관없는걸까요?

ycllyo님의 프로필 이미지
ycllyo
질문자

image

image

image

image

ycllyo님의 프로필 이미지
ycllyo
질문자

정말 죄송한데 혹시 언제쯤 해결할 수 있을까요?ㅠㅠ 여기에 막혀서 지금 강의를 못듣고 있는 상태인데 하루가 그냥 지나가 버렸습니다...

파일 자체를 재설치도 해보고 했는데 계속 같은 오류가 나네요ㅠ...

강의에서 제공해드리는 프로젝트 코드로 확인해보시겠어요?

만약 동일하다면 jpashop2.mv.db를 생성해서 확인해주세요. application.yml의 url도 ~jpashop2로 변경하셔야 합니다.

 

코드상에서 문제가 발생하지 않고, 자주 발생하는(=이전에 발생하던) 상황은 아니여서 해결 방법을 하나씩 안내드리고 확인해주시는 방법으로 해야 할 것 같습니다.

3시 전까지 답변 남기실 경우 답변 드리고, 3시 지날 경우 저녁에 다시 확인후 답변 드리겠습니다.

ycllyo님의 프로필 이미지
ycllyo
질문자

h2설치 및 설정은 제가 답글에 적은게 다 맞는걸까요?

jpashop2로 해도 같은 오류가 납니다

///////////////////////////////////////////////////////////////////////////////////

프로젝트 코드는 다른거 없이 그냥 테스트파일을 런 해보면 되는걸까요?

image이렇게 오류가 납니다

ycllyo님의 프로필 이미지
ycllyo
질문자

아아 해결했습니다ㅠㅠ h2만 죽어라 다시 시도했는데 그냥 코드가 잘못됐었네요...ㅠ
답변 감사했습니다

ycllyo님의 프로필 이미지
ycllyo

작성한 질문수

질문하기