복붙노트

[SPRING] 스프링 부트 웹 애플리케이션이 JUnit에서 다시 시작해야합니다.

SPRING

스프링 부트 웹 애플리케이션이 JUnit에서 다시 시작해야합니다.

극한의 상황에 빠지지 않고 Junit 테스트를 한 번에 실행하면 문제가 발생합니다. 클래스별로 클래스를 실행하면 모든 것이 훌륭합니다! 그렇지 않으면 junit-test-class에서 WebApplication을 다시 시작할 수 없기 때문에 문제가 발생합니다. 이로 인해 Zookeeper 서버 클라이언트가 내 WebApplication에서 Zookeeper 서버의 종료 및 시작을 거쳐 클래스 사이에서 중단 된 후에 중단됩니다. 그 사육사 서버 클라이언트는 서버와 재 동기화하는 데 시간이 걸릴 수 있으며 예측할 수없는 동작이 발생합니다 ...

JUnit 테스트의 @BeforeClass 및 @AfterClass 메서드에서 무언가를 호출하여 SpringBootServletInitializer 클래스를 다시 시작하는 방법이 있습니까?

WebApplication.java

@ComponentScan
@EnableAutoConfiguration
@EnableWebMvc
@EnableHyperMediaSupport(...)
@PropertySources(...)
public class WebApplication extends SpringBootServletInitializer
{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)
    {
        return builder.sources(WebApplication.class);
    }

    @Override
    protected WebApplicationContext run(SpringApplication application)
    {
        application.getSources().remove(ErrorPageFilter.class);
        return (WebApplicationContext) application.run();
    }

    public static void main(String[] args)
    {
        SpringApplication.run(WebApplication.class, args);
    }
}

해결법

  1. ==============================

    1.@DirtiesContext 주석을 사용할 수 있습니다.

    @DirtiesContext 주석을 사용할 수 있습니다.

    이것은 스프링 테스트 러너에게 테스트 메소드 사이의 컨텍스트를 다시로드 할 것을 암시합니다.

  2. from https://stackoverflow.com/questions/33151702/i-need-my-spring-boot-webapplication-to-restart-in-junit by cc-by-sa and MIT license