SCKorea / sc-backend

스타시티즌에 대한 한국어 패치를 배포하고 게임 뉴스를 DeepL 기반으로 번역하여 제공하는 서비스
https://sc.galaxyhub.kr/
1 stars 0 forks source link

fix: Testcontainers 사용 시 버그 수정 (#82) #83

Closed seokjin8678 closed 10 months ago

seokjin8678 commented 10 months ago

관련 이슈

PR 세부 내용

82 이슈에서 Spring Bean 생성자 주입을 받을 때 문제가 생긴다고 했지만, 통합 테스트를 여러 개 만들어도 문제가 생깁니다.

IntegrationSpec을 상속했을 때 DockerComposeContainerExtension 인스턴스가 상속 받은 클래스 만큼 생성되는데, 이때 중복적으로 컨테이너 실행되므로, 컨테이너 간 충돌이 발생하여 테스트가 실패합니다.

따라서 82번 이슈와 함께 해결하기 위해 ProjectExtension을 상속한 Extension을 만들었고, @Autoscan 어노테이션으로 모든 테스트마다 Extension이 등록되도록 하였습니다.

해당 Extension은 실행된 테스트 클래스(Spec) 중 @EnableTestcontianers 어노테이션이 붙어있는 테스트가 발견되면 컨테이너를 실행하고, 없으면 실행하지 않도록 하여, 테스트 컨테이너가 필요 없는 테스트에서 테스트 컨테이너를 실행하느라 시간이 소요되는 것을 막았습니다.

따라서 통합 테스트가 필요한 경우 IntegrationSpec을 상속하여 사용하면 되고, 통합 테스트는 아니지만 DB 의존이 필요한 테스트는 @EnableTestcontianers 어노테이션을 붙여서 사용하면 됩니다.

github-actions[bot] commented 10 months ago

Test Results

21 files  21 suites   4s :stopwatch: 71 tests 71 :white_check_mark: 0 :zzz: 0 :x: 94 runs  94 :white_check_mark: 0 :zzz: 0 :x:

Results for commit dd292281.

:recycle: This comment has been updated with latest results.