繁体   English   中英

如何在春季测试中加载@Profile服务?

[英]How to load a @Profile service in spring-test?

如何在spring-test加载@Profile组件,而不必显式启动该配置文件作为启动配置文件?

@Configuration
@Profile("dev1")
public class MvcInterceptor extends WebMvcConfigurerAdapter {
    //adding a custom interceptor
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MappedInterceptor("/customer", new CustomerInterceptor()));
        super.addInterceptors(registry);
    }

}


@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
//@ActiveProfiles("dev1") //I don't want spring to load the full profile chain
public class SpringTest {
    @Autowired
    protected MockMvc mvc;

    @Test
    public void test() {
        mvc.perform(get(...))...;
    }
}

问题:如何在MvcInterceptor不使用@ActiveProfiles("dev1")来加载MvcInterceptor

因为, dev1配置文件将暗示要设置更多的资源,而我不需要进行该测试。 我只想加载MvcInterceptor ,而不必启动完整的配置文件。

不可能?

它通过在静态内部@TestConfiguration类中初始化Bean来工作。

public class SpringTest {
    @TestConfiguration
    public static class TestConfig {
        @Bean
        public MvcInterceptor interceptor() {
            return new MvcInterceptor();
        }
    }
}

尽管MvcInterceptor@Profile依赖的,但它将为测试连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM