fix: Testcontainers 사용 시 버그 수정 (#82) #83
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
관련 이슈
PR 세부 내용
#82 이슈에서 Spring Bean 생성자 주입을 받을 때 문제가 생긴다고 했지만, 통합 테스트를 여러 개 만들어도 문제가 생깁니다.
IntegrationSpec
을 상속했을 때DockerComposeContainerExtension
인스턴스가 상속 받은 클래스 만큼 생성되는데, 이때 중복적으로 컨테이너 실행되므로, 컨테이너 간 충돌이 발생하여 테스트가 실패합니다.따라서 82번 이슈와 함께 해결하기 위해
ProjectExtension
을 상속한 Extension을 만들었고,@Autoscan
어노테이션으로 모든 테스트마다 Extension이 등록되도록 하였습니다.해당 Extension은 실행된 테스트 클래스(Spec) 중
@EnableTestcontianers
어노테이션이 붙어있는 테스트가 발견되면 컨테이너를 실행하고, 없으면 실행하지 않도록 하여, 테스트 컨테이너가 필요 없는 테스트에서 테스트 컨테이너를 실행하느라 시간이 소요되는 것을 막았습니다.따라서 통합 테스트가 필요한 경우
IntegrationSpec
을 상속하여 사용하면 되고, 통합 테스트는 아니지만 DB 의존이 필요한 테스트는@EnableTestcontianers
어노테이션을 붙여서 사용하면 됩니다.