인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

박찬영님의 프로필 이미지
박찬영

작성한 질문수

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

JPA

jpa 테스트 오류

작성

·

846

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

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

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

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


감사합니다

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

테스트 성공은 했습니다.

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

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

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

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


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

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

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

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

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

감사합니다.

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

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

 

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

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

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

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

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

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

코드 확인해보았습니다. 저도 처음에 동일한 문제가 발생하다가 코드 상에서는 문제가 보이지 않아 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를 반드시 실행하고 확인해주세요

 

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

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강의)를 들어도 상관없나요?

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

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

 

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

 

박찬영님의 프로필 이미지
박찬영

작성한 질문수

질문하기