inflearn logo
강의

講義

知識共有

ホドルマンの腹痛開発ショー (SpringBoot、Vue.JS、AWS)

단위 테스트는 통과하는데 전체 테스트를 통과를 못하고 있습니다

481

sagara12

投稿した質問数 6

2

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
안녕하세요 호돌맨님 강의를 들으면서 저도 따라 만들고 있는데..
강의의 PostController Test에 해당 하는 부분에서 문제가 발생 했습니다.
각각의 단위 테스트는 통과를 하는데 Controller 전체를 돌려보면 문제가 발생하네요
@BeaforEach를 써서 clean 메소드도 구현 한 상태이고
@BeforeEach
void clean() {

writeRepository.deleteAll();
}
각 각 테스트에 테스트가 끝나면 queryDSL로 DB를 삭제해주는 쿼리를 넣어줘도 같은 문제가 일어납니다.
디버깅을 해봤을때
 
class WriteService 부분의 (강의 PostService에 해당)
 
public List<WriteResponse> getList(WriteSearch writeSearch) {
 
List<WriteResponse> collect = writeRepository.getList(writeSearch).stream()
.map(write -> new WriteResponse(write) )
.collect(Collectors.toList());
return collect;
 
이 부분에 writeId가 기존의 값에 +2가 되서 나오고 있습니다. (원래 writeId에 30이 출력 되어야 하는데 writeId 32가 출력이 됩니다. 단위 테스트 할때는 제대로 출력이 되는것을 확인 했습니다. )
오늘 내내 고쳐보려고 했는데 해결 방법이 안보이네요...
어떻게 고쳐야 할지 도와주시면 감사하겠습니다.
 
 
* 추가
Pageable pageable = PageRequest.of(page, 5, Sort.Direction.DESC, "writeId");
이 부분을 구현 하기전에  원래  write_Id였는데  writeId로 고쳤습니다. 이 부분에 문제가 생겼는지
쿼리를 보면 writeId로 생성 하는것이 아닌 write_Id로 테이블을 만들어졌습니다.
해당 문제도  writeId로 고치고 나서 발생하는 것 같습니다.
 
 

aws vuejs JPA spring-boot Spring Security

回答 3

1

hodolman888675

왜 인지 알것 같기도 하고 모를것 같기도하고..
github에 소스 올려주시면 제 컴터에서 실행 해보는 게 빠를것 같습니다.
올리신 뒤에 주소좀 알려주세영

0

sagara12

https://github.com/sagara12

에  dataPage라는 프로젝트입니다. 감사합니다.

 

0

hodolman888675

답장이 늦어서 죄송합니다.
지금 함 돌려봤는데 왜 인지 알것 같습니다.

Write.java 엔티티를 보시면

strategy를 AUTO가 아닌 GenerationType.IDENTITY로 변경한 뒤 테스트 해보시겠어요?

그리고AUTO, IDENTITY가 어떤 걸 의미하는지, 그리고 각각 애플리케이션을 실행했을때 테이블이 어떻게 생성 되는지 h2 console에 들어가셔서 확인해보시면 좋을것 같습니다.

감사합니다.

0

sagara12

한번 해보겠습니다 감사합니다 호돌맨님!

0

sagara12

문제 해결했습니다 감사합니다. 호돌맨님

1

sagara12

바쁘신데 감사드립니다

Write 엔티티 입니다.

테스트마다 TRUNCATE을 하는 클래스를 따로 구현 해서 @BeforeEach에 넣어서 해결 하려고 했는데 고쳐지지 않았습니다.

ALTER 쿼리에서 오류가 발생해서  검색 해본 결과

 entityManager.createNativeQuery("TRUNCATE TABLE " + "write " + "RESTART IDENTITY").executeUpdate();

로 자동증가하는 컬럼값을 초기화 할 수 있다고 해서 적용해봤는데 변함이 없었습니다.

감사합니다.

 

1

hodolman888675

안녕하세요. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.

보내주신것만 봐서는 정확히 모르겠는데용,
Entity쪽도 같이 스크린샷 첨부해주실 수 있나요?

참고로 deleteAll() 같은 경우는 데이터를 초기화 하는것이지
primary_id값을 (1로) 초기화 시켜주지 않으며 계속 증가하게 됩니다.

Deprecated 관련 사항들

0

100

2

깃헙 collaboator 초대 관련

0

86

1

강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다

0

157

2

logout 후에 login 페이지 이동은 어디서 시켜주는건가요?

0

229

1

다중 데이터를 삭제 할 때

0

270

2

querydsl Q class 이슈

0

414

2

Windows WSL Vue 설정

2

246

1

Dip, @transactional

0

187

1

[vite] http proxy error: /auth/login

0

1041

2

로그인 하고 나서 GET요청으로 메인페이지 요청

0

234

2

GitHub Collaborator 초대 관련

0

256

2

Window에서 Vue.js 설정

0

321

2

collaboator로 초대받을 수 있을까요??

0

283

2

SecurityMockContext 로부터 유저 정보를 가져오기

0

261

1

섹션9 프론트의 코드를 보고싶습니다,,,

0

423

1

Spring Security - defaultSuccessUrl 질문

0

625

1

강의 화면이 나오지 않습니다. 음성과 자막만 나와요

0

302

1

JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ

0

689

2

ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상

0

1178

2

섹션10 언제 나오나요?

0

483

1

CommentService에서 Repository를 호출하지 않는데도

0

341

1

Editor....를 활용한 패턴에 질문있습니다.

0

493

1

섹션9 vue

0

451

2

Post에 edit 메서드 삼항연산자 질문

0

472

2