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

플레어님의 프로필 이미지

작성한 질문수

스프링과 JPA 기반 웹 애플리케이션 개발

테스트 DB를 PostgreSQL로 전환

테스트DB를 PostgreSQL 로 전환 후 테스트 수행시 오류

작성

·

558

0

안녕하세요. 강의에 나온대로 진행 후 테스트 수행하니 아래와 같이 오류가 납니다. 무슨 문제일까요?

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)

at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)

at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)

at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)

at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)

at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)

at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)

at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)

at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:77)

at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestClassConstructor(ClassBasedTestDescriptor.java:333)

at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateTestClass(ClassBasedTestDescriptor.java:280)

at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.instantiateTestClass(ClassTestDescriptor.java:77)

at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:262)

at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$2(ClassBasedTestDescriptor.java:256)

at java.base/java.util.Optional.orElseGet(Optional.java:369)

at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$3(ClassBasedTestDescriptor.java:255)

at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:29)

at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:108)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)

at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:107)

at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:71)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$1(NodeTestTask.java:107)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:107)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:75)

at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)

at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)

at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)

at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)

at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)

at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)

at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)

at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)

at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)

at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)

at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)

at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)

at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)

at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)

at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)

at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)

at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)

at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)

Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed

at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:322)

at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:302)

at com.etopia.studyolle.infra.AbstractContainerBaseTest.<clinit>(AbstractContainerBaseTest.java:10)

... 63 more

Caused by: org.testcontainers.containers.ContainerFetchException: 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)

at org.testcontainers.containers.GenericContainer.logger(GenericContainer.java:600)

at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:311)

... 65 more

Caused by: java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration

at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$3(DockerClientProviderStrategy.java:163)

at java.base/java.util.Optional.orElseThrow(Optional.java:408)

at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:155)

at org.testcontainers.DockerClientFactory.getOrInitializeStrategy(DockerClientFactory.java:113)

at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:134)

at org.testcontainers.LazyDockerClient.getDockerClient(LazyDockerClient.java:14)

at org.testcontainers.LazyDockerClient.listImagesCmd(LazyDockerClient.java:12)

at org.testcontainers.images.LocalImagesCache.maybeInitCache(LocalImagesCache.java:68)

at org.testcontainers.images.LocalImagesCache.get(LocalImagesCache.java:32)

at org.testcontainers.images.AbstractImagePullPolicy.shouldPull(AbstractImagePullPolicy.java:18)

at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:62)

at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:25)

at org.testcontainers.utility.LazyFuture.getResolvedValue(LazyFuture.java:20)

at org.testcontainers.utility.LazyFuture.get(LazyFuture.java:27)

at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1263)

... 67 more

답변 7

1

오 겁나 잘된다 ㅠㅠㅠ 다들 감사합니다

1

저도 에러났었는데요..

Docker 설치해서 실행 시켜놓은 후에

testcontainers core(https://mvnrepository.com/artifact/org.testcontainers/testcontainers)와 testcontainers postgreSQL(https://mvnrepository.com/artifact/org.testcontainers/postgresql)을 둘 다 같은 최신버전으로 변경해주니 되네요.

1

백기선님의 프로필 이미지
백기선
지식공유자

네 도커는 설치해야죠. TestContainers 버전을 이 강의에 나오는 버전 말고 좀 더 최신 버전으로 사용해 보세요.

<dependency>

    <groupId>org.testcontainers</groupId>

    <artifactId>testcontainers</artifactId>

    <version>1.15.0</version>

    <scope>test</scope>

</dependency>

0

저도 작업 중 동일한 에러가 났는데요!

testcontainers - postgresql 버전만 변경하셨나요?
1.13.0 안되어서 1.15.2 하였는데 똑같이 에러가 나네요ㅠㅠ

0

https://mvnrepository.com/artifact/org.testcontainers

도커와는 별개로 위의 링크에서 TestContainers 최신 버전 사용 시 해결 되었습니다.

0

저도 같은 에러가 납니다. 
혹시 해결하셨나요? 
TestContainers를 사용하기 위해서는 도커를 설치해야 하나요? 
혹시나 해서 도커를 설치했는데도 에러가 그대로 발생하네요 ㅠ

0

백기선님의 프로필 이미지
백기선
지식공유자

다음 에러 메시지를 보니 도커 관련 문제로 보이는데 정확히는 모르겠네요. 네트워크 문제로 도커 이미지를 다운받지 못한건지.. 도커가 아에 설치가 안되있는건지 확인해 보시면 좋겠습니다.


Caused by: org.testcontainers.containers.ContainerFetchException: Can't get Docker image: RemoteDockerImage(imageNameFuture=java.util.concurrent.CompletableFuture@28486680[Completed normally], imagePullPolicy=DefaultPullPolicy(), dockerClient=LazyDockerClient.INSTANCE)