프로그래밍/spring

최신순 정렬 테스트시 발생한 시간순 정렬 문제

승민아 2024. 3. 31. 13:56

 

잘 돌아가던 최신순 조회 테스트 코드가...

 

 

갑자기 실패하기 시작한다??

 

 

 

반복문을 통해 게시글을 순서대로 DB에 잘 저장도 하고 있고 작성일을 출력해봐도

 

 

먼저 들어간 게시글이 더 빠른 시간으로 출력도 된다...

 

뭐가 문제일까?

 

Service단의 반환으로 받은 정렬된 게시글의 정보도 한번 출력해보자.

PageResponse<PosterResponse> pageResponse = posterService.getLocationPosters(newLocation.getId(), conditionRequest);
PageInfo pageInfo = pageResponse.getPageInfo();
List<PosterResponse> posters = pageResponse.getResults();

//then
...
for (int i = 0; i < posters.size(); i++) {
    System.out.println("posters.get(i).getRegDate() = " + posters.get(i).getRegDate());
    System.out.println("posters.get(i).getTitle() = " + posters.get(i).getTitle());
}

 

 

위와 같이 순서대로 잘 나올때도 있지만

 

역순으로 나올때도 있다.

 

잘보면 문제 답이 있다.

디비에서는 초 단위를 2자리까지만 저장하기에 우리가 정렬할때도 이 자리수 까지만 비교 계산한다.

 

그러니 초단위가 동일해서 일정한 결과를 보장 받지 못하고 있는 상황인 것이다.

 

 

시간을 i만큼 더하는 코드를 작성해서 UPDATE 쿼리를 날려주자.

 

시간차이를 크게 만들어서 일정한 테스트 코드 결과를 얻을 수 있다.