반응형
val testLocalTime = LocalTime.of(9,0)
mockkStatic(LocalTime::class)
every { LocalTime.now() } returns testLocalTime
테스트코드를 짜던 도중 LocalTime을 모킹해야 할 일이 생겼다.
참고로 java11, kotlin, mockk을 사용한 코드다.
테스트 코드를 돌려보면 에러가 뜬다.
Caused by: java.lang.reflect.InaccessibleObjectException
구글링 해보니
https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-12F945EB-71D6-46AF-8C3D-D354FD0B1781
이렇다고 한다.
테스트 코드를 돌릴 때만
--add-opens=java.base/java.time=ALL-UNNAMED
옵션을 넣어줘야겠다.
build.gradle.kts에 추가
tasks.withType<Test>().all {
jvmArgs("--add-opens=java.base/java.time=ALL-UNNAMED")
}
추가적으로,
LocalDateTime, Random등 외부에서 컨트롤 할 수 없는 값들은 함수 외부에서 주입받아서 사용하도록 해야 테스트 코드를 짤 때 좋은 설계라고 한다. 그런데 테스트 코드 상에서 위 값들을 컨트롤할 수 있다면 굳이 외부에서 주입받을 필요가 있을까 싶기도 하다.
반응형
'Tips > Errors' 카테고리의 다른 글
[JPA] @OneToMany 자식이 삭제되지 않는다 (0) | 2022.07.18 |
---|---|
Gradle multi project 특정 dependency 제외 안 됨 (1) | 2022.03.14 |
[STS][eclipse] SpringBoot에 ansi콘솔로 인한 렉/ 콘솔 렉 (0) | 2021.07.30 |
[svelte template clone][ 'degit@latest' ] 설치가 오류 코드 7로 실패했습니다 (0) | 2021.07.27 |
오라클 디벨로퍼 실행 안 될 때. 안 켜질 때. (1) | 2020.12.11 |