小编典典

我需要Spring Boot WebApplication在JUnit中重新启动

spring-boot

无需赘述细节,一次运行Junit测试时就会遇到问题。如果我逐班运行它们,那么一切都很好!否则,我会遇到麻烦,因为无法在junit-test-
class之间重新启动WebApplication。这导致我的WebApplication中有Zookeeper服务器客户端,在我在类之间关闭和启动Zookeeper服务器之后,这些客户端仍在徘徊。这些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);
    }
}

阅读 597

收藏
2020-05-30

共1个答案

小编典典

您可以使用@DirtiesContext注释。

这将提示Spring Test运行器重新加载测试方法之间的上下文。

2020-05-30