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

박찬영님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

JPA

jpa 테스트 오류

23.01.26 12:15 작성

·

821

0

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

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

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

[질문 내용]
============================

CONDITIONS EVALUATION REPORT

============================

Positive matches:

-----------------

None

Negative matches:

-----------------

None

Exclusions:

-----------

None

Unconditional classes:

----------------------

None

 

MemberServiceIntegrationTest에서 실행하면 위에 오류가 뜹니다. 코드 빠뜨린건 없는데, 이유를 몰라 질문해 봅니다.

스프링 3.0 이상 버전이며 h2는 2.1.214 버전입니다

답변 1

0

OMG님의 프로필 이미지

2023. 01. 26. 13:02

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

다음 링크의 답변을 참고해주세요 :)

1번의 경우 test.mv.db 파일을 제거하거나 test2.mv.db를 새로 생성하여 확인해주세요


감사합니다

박찬영님의 프로필 이미지
박찬영
질문자

2023. 01. 28. 16:39

테스트 성공은 했습니다.

spring.jpa.show-sql=true; spring.jpa.hibernate.ddl-auto=none;

이 부분에 세미콜론을 모르고 붙여서 오류가 뜬 것 같아서 없애보니 제대로 됬습니다.

문제는 처음에 만든 test.mv파일 지우고 새로 만든 파일로 해도 안되서 h2파일과 사용자 계정 디렉토리에 있는 파일 다 삭제하고 다시 설치해서 사용자 계정에 test.mv 생성된거 확인하고 테스트 돌려도 h2에 적용이 안되서 막혔습니다. 뭘 더 해야 하나요?

OMG님의 프로필 이미지

2023. 01. 28. 17:33

질문 남기신 내용에 대한 원인으로 오타로 인한 오류라고 하셨으니 그 외 발생하는 문제를 확인하기 위해 코드를 봐야 할거같네요


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

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

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

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

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

감사합니다.

박찬영님의 프로필 이미지
박찬영
질문자

2023. 01. 29. 15:40

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

 

1. h2를 실행하고 MemberServiceIntegrationTest를 실행하였습니다.

2.강의에서 MemberServiceIntegrationTest를 실행하고 h2를 보면 spring이 들어가는데, 현재 저는 MemberServiceIntegrationTest를 실행하면 h2에 들어가 있지 않습니다.

OMG님의 프로필 이미지

2023. 01. 29. 15:48

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

액세스 권한 필요가 출력되지 않도록 링크있는 사용자에게 공유설정 확인해주세요

박찬영님의 프로필 이미지
박찬영
질문자

2023. 01. 29. 19:30

죄송합니다. 링크가 있는 모든 사용자로 변경하였습니다.

OMG님의 프로필 이미지

2023. 01. 29. 23:54

코드 확인해보았습니다. 저도 처음에 동일한 문제가 발생하다가 코드 상에서는 문제가 보이지 않아 h2 문제라 생각하여 db를 지우고 재실행해서 해결하였습니다.

저는 참고로 맥을 사용합니다.

 

맥일 경우 )

1.터미널을 열고 다음 명령어를 입력(데이터베이스 삭제) rm test.mv.db

2.해당 경로에서 바로 다음 명령어 입력(데이터베이스 생성) touch test.mv.db

3.해당 경로에서 바로 다음 명령어 입력(권한 변경) chmod 755 test.mv.db

4.application.properties 수정 : spring.jpa.hibernate.ddl-auto=create

5.재실행해서 확인

 

윈도우 일 경우)

1. C:\Users\OMG(계정명) 하위에 텍스트 파일을 만듭니다.

[[ c드라이브 통해서 들어가도 되고, 바탕화면에 있는 내계정명 폴더로 들어가셔도 됩니다.]]

2. 텍스트 파일을 열고(내용x) 다른이름으로 저장을 누릅니다.

3. 파일 이름을 test2.mv.db, 파일형식을 모든 파일로 바꿉니다. 저는 우측에 인코딩은 utf-8로 했는데, 인코딩은 크게 중요한거 같진 않지만 우선 동일하게 맞춰주세요.

4. h2.bat 파일을 실행해주세요.(기본 실행창{실행시키면 열리는 창} or localhost:8082)

실행 후 아래와 같이 입력 후 연결 눌러주세요.

(jdbc:h2:tcp://localhost/~/test2 << JDBC URL 복사붙여넣기 하세요)

 

h2를 반드시 실행하고 확인해주세요

 

박찬영님의 프로필 이미지
박찬영
질문자

2023. 01. 30. 22:36

test2.mv를 만들어도 test.mv처럼 MemberServiceIntegrationTest 실행 시

member.setName("spring")에 spring이 h2의 test.mv에 반영이 안되고 있습니다.

대신 localhost:8080에 있는 회원가입에 이름을 아무거나 등록하면 test.mv에 반영이 되는데, test2.mv는 반영이 안되고 있습니다.

일단 MemberServiceIntegrationTest 실행 시 member.setName("spring") 부분이 h2의 test.mv에 반영이 안되어도 나머지 3강의(스프링 데이터jpa, AOP 총2강의)를 들어도 상관없나요?

OMG님의 프로필 이미지

2023. 01. 30. 22:39

test2.mv.db를 만들고 나서 h2 접속하는 화면과 인텔리제이 application.yml에서 jdbc:tcp:~ /test를 test2로 변경해야합니다.

기존 test db에서 문제가 발생한 것으로 생각했거든요.

 

테스트에서 한 테스트 데이터가 DB에 반영되지 않아도 상관없이 진행 가능할거같아요.