이전 글 - TestContainer 를 통해 테스트 용이성 높이기 - 입문
TestContainer 를 통해 테스트 용이성 높이기 - 입문
TestContainer TestContainers 라는 라이브러리는 테스트 코드에서 손쉽게 원하는 모듈을 테스트용도로 띄우고 내릴 수 있습니다. // add in build.gradle testImplementation 'org.testcontainers:testcontainers..
happy-coding-day.tistory.com
실제로 TestContainer 를 사용하다보면 예기치 않게 동작되는 경우가 있습니다.
docker-compose 를 통해 잘되는 것을 확인하고 난 뒤, 이를 TestContainer 를 활용해 컨테이너를 띄울 경우 이슈가 발생합니다. 왜냐하면 우리의 Docker-compose 는 비동기로 동작되기 때문입니다.
수동으로 docker-compose 를 사용해 테스트하는 경우의 동작 순서는 아래와 같습니다.
이를 그대로 TestContainers 를 활용해 docker-compose 를 up 하게되면 아래와 같은 순서로 동작됩니다.
이렇게 동작되다보니, Run TestCode 가 동작될 때, 아직 docker images가 준비되지 않아, 테스트가 실패하게 됩니다.
이런 경우를 위해 TestContainers 는 docker-compose 가 Ready 가 될 때까지 기다릴수 있는 설정을 제공합니다.
코드로서 표현하면 다음과 같습니다.
@ClassRule
public static DockerComposeContainer container =
new DockerComposeContainer(new File("docker-compose.yml"))
.waitingFor("mockServer_1", Wait.forHttp("/"))
.waitingFor("config-server_1", Wait.forHttp("/config/mock-application.yml"));
.waitingFor 라는 메소드를 통해 각각의 images 가 준비완료 상태일 때까지 TestCode 를 실행시키지 않습니다.
이렇게 함으로써 docker-compose 를 TestContainers 에서도 올바르게 사용할 수 있게 됩니다.
'마이크로서비스' 카테고리의 다른 글
TestContainer 를 통해 테스트 용이성 높이기 - 입문 (0) | 2022.04.17 |
---|---|
AWS Simple Queue Service(SQS) 예제 코드로 다가가기 - #2 (0) | 2021.11.20 |
AWS Simple Queue Service(SQS) 이론적으로 다가가기 - #1 (0) | 2021.11.14 |
Eventuate.io 간단 파헤치기 (0) | 2020.10.29 |
오케스트레이션(orchestration)과 코레오그래피 (choreography) (0) | 2020.10.17 |
댓글