테스트 DB를 PostgreSQL로 전환하던 도중 발생한 오류이다. 테스트 db를 운영용 db와 같은 유형으로 바꾸기 위해 TestContainers을 사용했다.
java.lang.ExceptionInInitializerError
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.junit.platform.commons.util.ReflectionUtils.newInstance(ReflectionUtils.java:511)
at org.junit.jupiter.engine.execution.ConstructorInvocation.proceed(ConstructorInvocation.java:56)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
...
Can't get Docker image: RemoteDockerImage(imageNameFuture=java.util.concurrent.CompletableFuture@28486680[Completed normally], imagePullPolicy=DefaultPullPolicy(), dockerClient=LazyDockerClient.INSTANCE) at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1265)
....
강의대로 따라했는데 50개의 test 중 11개만 통과되고 39 개의 test가 fail 되었다. 우선 강의 댓글을 보고 나와 똑같은 에러가 발생한 사람이 있는지 찾아봤다. 😶
Can't get Docker image: RemoteDockerImage(imageNameFuture=java.util.concurrent.CompletableFuture@28486680[Completed normally], imagePullPolicy=DefaultPullPolicy(), dockerClient=LazyDockerClient.INSTANCE) at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1265)
백기선님께서는 다음과 같은 답변을 달아주셨다. 답변을 보고 앗차 싶었다. 난 docker 조차 설치를 안했었다. 😳 docker 는 학부 클라우드 수업 때 많이 사용해보긴 했는데 windows에서의 경험은 없었다.
도커 설치 전 환경 설정
도커 설치 파일 다운 및 설치
도커 설치 후 실행하려고 했지만, 실행할 수 없었다. 😔
wsl2 installation is incomplete
위와 같은 메세지를 담고 있는 창이 떴다. 음 .. wsl2 이게 뭐지? 난생 처음보는 ....
이런 것도 있다니 매우 신기했다. ㅋㅋㅋ 난 mac만 써서 항상 쉽게쉽게 우분투도 이용하고 도커도 다운받았었던 것 같은데 .. (당시 윈도우 사용중이던 친구들이 고생하긴 했음)
다 완료했으니까 이제 TestContainers가 잘 작동하겠지? 🤨🤨🤨
이게 무슨일이야. 다음과 같은 메세지와 함께 .. 아예 인텔리제이가 켜지지 않았다.
구글링을 했다.
java.util.concurrent.CompletionException: java.net.BindException: Address already in use: bind
댓글 중 다음과 같은 내용을 발견했다. 설마 도커 설치 전에 켜놨던 hyper -v 가 문제였을까? 다시 제어판 들어가서 hyper -v 에 체크를 해제했다. 윈도우 재부팅 후 다시 인텔리제이를 켜보니 성공 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
에러로 시뻘겋던 창이 사랑스러운 초록색으로 바뀌었다. 💪 💚💚💚💚💚
출처:
https://goddaehee.tistory.com/251 [갓대희의 작은공간]
https://www.44bits.io/ko/post/wsl2-install-and-basic-usage
https://intellij-support.jetbrains.com/hc/en-us/articles/360007568559-Start-Failed-Internal-error-recovering-IDE-to-the-working-state-after-the-critical-startup-error