굉장히 넌센스 느낌의 에러입니다. 아래처럼 "create table 테이블이름 ..." 쿼리에 오류가 있다는 내용의 에러입니다. 이전에도 한 번 겪었던 에러여서 처음보다는 빠르게 눈치챌 수 있었습니다. Order 엔터티는 아래와 같이 정의했습니다. 결론을 말하자면 Entity이름이 문제였습니다. Entity이름이 Order이기에 order 라는 테이블이 생기는데 Order는 MySQL의 예약어이기 때문에 쿼리에서 오류가 생기는 것 이었습니다. 이에대해 해법으로는 1. Entity 클래스 이름을 변경한다. 2. @Table(name = ...) 어노테이션을 사용해서 생성될 테이블의 이름을 예약어를 피해 지정해준다
Mockito 를 사용하면서, 어떤 Mock method가 자신이 받은 인자를 그대로 반환하길 기대하고 싶은 때가 있다. 1. Iterable이 아닌 인자의 경우 배열, 리스트 같이 Iterable 이 아닌 객체에 적용하는 방법이다 when(Mock메소드(any(인자의 타입))).thenAnswer(AdditionalAnswers.returnsFirstArg)); 이 예시의 경우에는 AdditionalAnswers.returnsFirstArg 이기 때문에, 첫 번째 인자를 반환한다. 이 외에도, 두 번 째 인자나, n 번 째, 마지막 등등 여러 메소드를 제공해주고 있다. 2. Iterable인 인자의 경우 Iterable은 주로 Generic 을 사용해서 구현되어 있기 때문에 1 처럼 할 수 없다. 이 ..
Spring Boot를 Mockito 를 사용하여서 테스트하던 도중 아래와 같은 에러가 발생하였다. 모든 컴포넌트들(Bean)에 대해서 코드를 제시할 수는 없으니, 이 정도만 알면 맥락을 완전히 알 수 있겠다싶은 컴포넌트들에 대해서만 말씀드리겠습니다. 테스트 코드는 이러한 상태였고. StoreService 는 Service interface였습니다. 저는 StoreService의 구체화로 StoreServiceImpl을 가지고 있었고, StoreServiceImpl이 주입되길 바랐습니다. interface 이기 때문에 당연히 Constructor 가 없기 때문에 인스턴스화를 할 수 없을 것 입니다. 따라서, StoreServiceImpl 을 Mock 으로 사용해야 가능했을 것 입니다. 따라서 34라인을 ..
Why? Service 를 테스트 하면서, Service에서 사용하는 Repository를 Mock 하기보다는 인 메모리(H2)로 사용하고 싶어졌다. 물론, Best Practice는 Repository도 Mocking 을 해서 Service 클래스에 주입하는 것이지만, 되는지 궁금하기도 하고 어떻게 되는지 알아보려고한다. 물론, 이 글에서 다루는 내용은 위에 말한 것 자체를 다루지는 않는다. 위 처럼 테스트를 하기 위해서 적절한 Test annotation을 검색해보았는데, 익숙한 @DataJpaTest, @RunWith가 있다. 그런데, 어떤 글에서 @DataJpaTest 는 JPA에 필요한 객체들만 로딩해서 가볍다고 하는데, @RunWith(SpringRunner.class)를 같이 쓰고 있는 것이..
구실에서 사용할 서비스를 구현하는데, API 를 테스트 해보다가 겪어보지 못한 증상을 겪었습니다. Spring boot로(사실 어떤 프레임워크던...) 간단한 서비스만 만들었기 때문에 멀티쓰레드나 동시성에 대한 생각을 전혀 해본적이 없고 고려할 필요(물론 멀티 쓰레드에서 제대로 돌지 않겠지만) 없는 프로젝트만 했었는데 이번에 만들 서비스는 사용자가 많지 않더래도, 동시성에 대해 대비하지 않으면 데이터베이스가 심각하게 꼬이기에 한 번의 실수로 서비스 자체를 중지시키고 데이터베이스를 되돌려 놓아야 할 상황이었습니다. JPA를 사용하고 있기 때문에, JPA 내부적으로 Database 의 Lock 과 어떻게 싱크를 맞추고 협력하는지 직관적으로 알 수 없었고. JPA Lock 이나 JPA isolation lev..
JPA를 사용하면서 잘 생각하면 정말 당연하고 간단한 문제이지만, 자칫하면 엄청난 시간을 허비할 수 있는 실수를 만들었다. 위와 같은 entity를 JPA 가 table 로 만들면서 오류가 발생하였다. Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from integer' at line 1 에러메세지가 너무 줄줄히 나와서 코드를 보면서 빠르게 찾으려고 했으나, 몇 번 바꾸어봐도 이유를 알 수 없어 root cause 의 에러 메세지를..
- Total
- Today
- Yesterday
- CMake get file name
- 14714 공부법 어플리케이션
- CMake 기초
- function pointer overflow
- aws 청구문의
- react-native
- review reminder
- CMake for
- CMAke 파일이름 추출
- CMake 강좌
- 토리파 공부법
- 14714 복습법
- CMake run proto compiler
- 복습 계획어플
- aws 프리티어 요금청구
- 복습 어플
- 14714 어플
- 14714 공부법
- CMake probouf
- CMake 반복문
- buffer-over-flow
- get_filename_component
- CMake for문
- 함수포인터 오버라이트
- 14714 어플리케이션
- 14714 플래너
- CMake run protoc
- 14714 앱
- CMake get_filename_Component
- 14714 review
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |