상황
Service 로직 테스트 코드를 작성하는 도중 findNotice.getNoticeImages().clear(); 부분에서 에러가 발생하는 것을 확인했다.
문제 파악
테스트 코드를 작성하기 위해 Builder를 작성하는 도중 List 타입 데이터에 대해 new ArrayList형식이 아닌 Arrays.asList 방식으로 데이터를 초기화 했다
private Notice testNotice() {
return Notice.builder()
.noticeId(1L)
.title("title")
.noticeDetail("detail")
.regYmd(LocalDateTime.now())
.noticeImages(Arrays.asList(testImage(1L, "test1"), testImage(2L, "test2"))) // 이 부분이 문제
.build();
}
java.lang.UnsupportedOperationException 에러는 new로 생성하지 않은 List의 데이터를 변경할때 발생했다.
위의 코드에서는 noticeImages가 findNotice.getNoticeImages().clear()가 호출되는 부분이다. new 키워드로 생성하지 않은 List 데이터를 clear()하려고 하니 에러가 발생한 것이다.
해결
Arrays.asList() 로 작성한 코드를 new ArrayList<>(Arrays.asList())형식으로 변경해준다.
private Notice testNotice() {
return Notice.builder()
.noticeId(1L)
.title("title")
.noticeDetail("detail")
.regYmd(LocalDateTime.now())
.noticeImages(new ArrayList<>(Arrays.asList(testImage(1L, "test1"), testImage(2L, "test2")))) // new ArrayList<>()로 변경
.build();
}
반응형
'Trouble Shooting > Spring Boot' 카테고리의 다른 글
@DataJpaTest 사용 시 Failed To Replace DataSource with an Embedded database for test 이슈 (0) | 2022.05.22 |
---|