Spring

수정 및 DB연결 관련 오류해결

potatoo 2022. 11. 7. 22:59
728x90

페이지의 게시물을 등록하고 수정하는 과정의 기능을 구현하고 테스트 하는 과정에서

지속적으로 DB값이 변하지 않는다고 생각했다.

버전이슈, 빌드이슈 모든 걸 찾아보면서 그 이유를 찾기 위해서 별별 짓을 다해봤는데 결국은 아주 간단한 것에서 문제가 있었다.

위의 코드에서 어노테이션을 처음에 @after를 사용한 것이 문제였다. @aftereach로 바꾸자 마자 모든 문제가 해결되었다.

@after을 사용하였을때는

위의 레포지토리를 가져와서 수정된 여부를 확인하는 테스트 코드에서 지속적으로 수정이 되지 않고 값이 변하지 않았다고 오류가 나왔다.

몇 번의 시행중 레포지토리에서 들어온 리스트의 인덱스 값을 변경하는 시도를 했다.

그 결과 테스트 성공 콘솔이 나왔다.

원인은 이전의 등록테스트에서 등록한 레포지토리의 값이 제거되지 않아서 이 문제가 발생했다.

등록테스트의 값이 레포지토리에 남아있어서

수정테스트의 값은 다음인덱스에 배정된 것이다.

물론 @after을 써도 각각의 테스트를 따로 실행한다면 오류는 없다.

단, 테스트 클래스 전체를 테스트한다면 레포지토리 충돌로 테스트를 실패하게 된다.

그럼으로 통합테스트 시에는 @aftereach를 사용하는 것을 추천한다.

그 다음으로 레포지토리를 웹 콘솔로 접근하는 과정을 실행하는 과정을 정리한다.

여기서 중요한 것은 application.porperties와 build.gradle의 설정이다.

위의 코드를 application.porperties에 입력하여서 db로 사용할 h2와 연결하고

이를 위해 gradle의 의존성 설정을 해주어야한다.

여기서 내가 문제를 겪은 것은 jdbc 의존성을 설정하지 않았던 것이다.

위의 설정을 마치고 localhost:8080/h2-console에 접근한다면 아래의 창을 볼 수 있을 것이다.

그대로 connect한 후 테이블에 값을 넣으면

컨트롤러에서 맵핑해 놓은 localhost:8080/api/v1/posts/{id} 의 페이지에서 Json 값을 확인 할 수 있다.

728x90