ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • spring boot 3.1 - testcontainers 2 - container lifecycle
    Spring/Test 2023. 12. 28. 14:30

     

    Junit & test container lifecycle

    아래의 절차대로 실행됩니다

     

    BeforeEach, Test1

    • 1. Connect to docker
    • 2. Ryuk started
    • 3. Checking the system
    • 4. Start Container
    • 5. Excute BeforeEach method
      @BeforeEach 에서 getContainer##() 메소드를 호출하여 사용할 수 있습니다.
    • 6. test1() method 실행

     

    반대로

    @AfterEach 이후에 Ryuk 이 container 를 cleans up 시킵니다.

     

     

    BeforeEach, test2()

    test1() 메소드 종료후 container 도 이미 clean up 하였으므로,  

    @BeforeEach 에서 containerId 를 출력해보면, test2() 메소드 에서는 new container 를 사용하는 것을 볼 수 있습니다.

     

    하지만 만약 testcontainer 를 static 으로 생성하게되면,  컨테이너를 죽이지 않고 재사용 합니다

     

     

    devTools @RestartScope

    개발하면서, 반복적인 디버그 시에  spring-boot-devtools 의 @RestartScope 을 사용하여, container 로딩 시간을 절약할 수도 있습니다.

    @TestConfiguration(proxyBeanMethods = false)
    public class TestDemoApplication {
    
        @Bean
        @ServiceConnection
        @RestartScope
        PostgreSQLContainer<?> postgresContainer() {
            return new PostgreSQLContainer<>(DockerImageName.parse("postgres:15.5"));
        }
    
        public static void main(String[] args) {
            SpringApplication.from(Application::main).with(TestDemoApplication.class).run(args);
        }
    
    }

     

    @RestartScope를 사용하면, 빈을 재시작된 애플리케이션에서도 유지할 수 있습니다.

    RestartScope로 생성된 빈은 애플리케이션이 재시작될 때에도 유지되며, 재시작된 애플리케이션에서 다시 사용할 수 있습니다.

     

     

    environment variables & startup commands

    아래처럼 docker 실행 시 환경변수나 argument 전달도 가능합니다.

     

     

     

    Ryuk 의 어원

    Ryuk는 일본 만화 및 애니메이션 시리즈인 "Death Note"의 등장하는 사신입니다. 

    데스노트에 기록된 사람이 죽으면 그 인간의 수명을 가져가는 역할을 합니다.


    Ryuk 모듈은 테스트가 완료된 후 사용되지 않는 모든 컨테이너를 자동으로 제거합니다. 

    따라서 테스트를 깨끗하게 유지하고 실수를 방지할 수 있습니다.

     

     

     

    발표자에 대한 개인 느낌

    여성 Cora Iberkleid ; 조곤조곤 핵심을 잘 발표하심, 개발을 많이 하시는 분 같진 않음

    남성 Oleg Selajev : 말 많고 장황한 스타일인데, testcontainer 영역의 장인인거 같음

    'Spring > Test' 카테고리의 다른 글

    spring boot 3.1 - testcontainers  (0) 2023.12.03

    댓글

Designed by Tistory.