인프런 커뮤니티 질문&답변
단위 테스트는 통과하는데 전체 테스트를 통과를 못하고 있습니다
작성
·
455
2
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 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로 고치고 나서 발생하는 것 같습니다.
답변 3
1
호돌맨
지식공유자
답장이 늦어서 죄송합니다.
지금 함 돌려봤는데 왜 인지 알것 같습니다.
Write.java 엔티티를 보시면
strategy를 AUTO가 아닌 GenerationType.IDENTITY로 변경한 뒤 테스트 해보시겠어요?
그리고AUTO, IDENTITY가 어떤 걸 의미하는지, 그리고 각각 애플리케이션을 실행했을때 테이블이 어떻게 생성 되는지 h2 console에 들어가셔서 확인해보시면 좋을것 같습니다.
감사합니다.
1
sagara12
질문자
바쁘신데 감사드립니다
Write 엔티티 입니다.

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

ALTER 쿼리에서 오류가 발생해서 검색 해본 결과
entityManager.createNativeQuery("TRUNCATE TABLE " + "write " + "RESTART IDENTITY").executeUpdate();
로 자동증가하는 컬럼값을 초기화 할 수 있다고 해서 적용해봤는데 변함이 없었습니다.
감사합니다.
1
호돌맨
지식공유자
안녕하세요. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.
보내주신것만 봐서는 정확히 모르겠는데용,
Entity쪽도 같이 스크린샷 첨부해주실 수 있나요?
참고로 deleteAll() 같은 경우는 데이터를 초기화 하는것이지
primary_id값을 (1로) 초기화 시켜주지 않으며 계속 증가하게 됩니다.






https://github.com/sagara12
에 dataPage라는 프로젝트입니다. 감사합니다.