2023. 11. 2. 21:28ㆍProject 해축갤/테스트 코드
위와 같은 코드가 있는 데 테스트하는 게 일일이 귀찮아서 시작했던 테스트 코드를
이제는 더 빨리 굴려볼 수는 없을까 라는 고민이 들어 코드를 한번 개선해보고자 했습니다.
그렇다면 어떤 부분을 개선할 수 있을까 라는 고민을 하다가 List <PostDbDTO> allPosts 부분을 봤습니다.
자료구조를 사용한다면 어떻게 더 빠른 코드가 생성이 될 수도 있지 않을까 싶었습니다.
그래서 다음 2가지 코드를 한번 짜봤습니다.
List 자료구조를 활용해 게시물 담기
처음은 기존처럼 Arrays.asList() 를 사용해 List 자료구조를 활용한 테스트 코드입니다.
원래의 코드와 다를 바가 없습니다.
이를 한번 실행시켜본다면
대략 529ms 정도가 나옵니다.
사실 뭐 테스트 하나 실행하는 데 529 ms 씩이나 나오나 싶지만,,,
실행환경 구축 등등에 들어가는 시간도 포함이니 그려려니 합니다 ㅠ
Collections.singletonList에다 담기
간략히 singletonList 에 대해 설명하자면
immutable list 이자, 지정된 하나의 object 만 담을 수 있는 리스트입니다.
이런 자료구조 immutable 하다는 것과 지정된 object 하나만 담을 수 있기 때문에
ArrayList처럼 내용을 조작할 때 검증하는 로직 등등이 없어 조회(query)만 하는 경우 더 빠른 자료구조이죠.
위 given 파트에서 singletonList 부분만 바뀌었습니다.
자 테스트를 돌리기 전에 캐싱 때문에 singletonList의 결과가 더 빠를 수도 있으니
캐시 한번 비워주고 테스트를 돌려보면
무려 366ms 정도로 줄었습니다!
이래서 자료구조를 알아야 되나 싶은 결과물입니다!
결론
하지만 이 코드는 사용되지 않았습니다 ㅠ,,,
왜냐면 테스트하려고 하는 api는 여러 게시물을 담는 자료구조가 필요한데
singletonList는 말했던 것처럼 하나의 원소만 담을 수 있기 때문이죠,,,
그래도 자료구조의 중요성에 대해서 배울 수 있었던 하루였습니다 :)
'Project 해축갤 > 테스트 코드' 카테고리의 다른 글
Hibernate의 "Detached Entity Passed to Persist" 오류 이해와 해결 (0) | 2023.11.08 |
---|---|
org.mockito.exceptions.misusing.UnnecessaryStubbingException 해결 (0) | 2023.11.07 |
테스트 코드 작성 시 유의할 점 (Mockito doNothing) (1) | 2023.11.02 |
postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다 (0) | 2023.10.31 |
Spring Boot JUnit5 : JPA metamodel must not be empty 에러 솔루션 (0) | 2023.10.31 |