인프런 커뮤니티 질문&답변

성재혁님의 프로필 이미지
성재혁

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

프로젝트 구조 설명3 - 테스트

HashMap을 사용한 MemoryItemRepository에서 순서 보장 문제와 테스트 실패 가능성 질문

작성

·

138

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

안녕하세요, "프로젝트 구조 설명3 - 테스트" 강의에서 ItemRepositoryTest 클래스안에 코드라인 88번 test(String itemName, Integer maxPrice, Item... items) 함수에서 사용되어진 containsExactly 함수는 참이기 위해서 모든 값이 같아하고 그리고 주어진 값들의 순서역시 같아야 한다고 이해를 하였습니다. 근데 여기에서 궁금한점이 MemoryItemRepository에서 HashMap을 사용한 경우 입력되어진 값들의 순서가 보장되어 지지 않아서 어떠한 경우에는 테스트 findItems이 값들의 순서가 일치하지 않아서 실패하는 것이 아닌가에 대해서 궁금증이 생기어서 질문을 남깁니다. 감사합니다 :)

 

답변 1

2

안녕하세요. 성재혁님, 공식 서포터즈 David입니다.

생각하신 부분이 맞습니다.

강의 예제에서는 item name과 저장 순서로 인해 테스트가 통과되지만 데이터 저장 순서나 맵의 크기가 변경될 때 순서가 섞일 수 있습니다.

아래 내용도 참고해 주세요.

https://stackoverflow.com/a/2144822/10709777

감사합니다.

답변 주신 글에 이해가 가지 않은 점이 있어 추가 질문드립니다.

 

테스트가 통과되는 점 : item name과 저장순서로 인해

순서가 섞일수 있는 점 : 데이터 저장순서나 맵의 크기 변경

 

위 두 가지가 상반되는 것 같다는 느낌이 듭니다.

(제가 이해가 부족해서 그런거라 너그럽게 받아주시길ㅠㅠ)

 

테스트는 항상 통과되야 일관성있는 테스트라고 생각합니다.

HashMap을 List로 바꾸면 순서를예측하지 못할 것인데 강의에서 item1, item2, item3 순으로 예측을 하셔서 신기할 따름입니다.

성재혁님의 프로필 이미지
성재혁

작성한 질문수

질문하기