我试图在"清洁"中运行@SpringBootTest
没有执行MyApplicationContextInitializer
的上下文。
MyApplicationContextInitializer
spring.factories
文件包含在compile-scope
依赖关系中,如下所示:
org.springframework.context.ApplicationContextInitializer=\
com.eremic.myapp.MyApplicationContextInitializer
测试类:
@SpringBootTest(webEnvironment = RANDOM_PORT)
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = TestContext.class)
public class UsersControllerTest {}
测试配置:
@SpringBootConfiguration
public class TestContext {}
有没有办法从MyApplicationContextInitializer
排除@SpringBootTest
?
我已经厌倦了excludeFilters @ComponentScan.Filters
,但它对ApplicationContextInitializer没有任何影响。
另外,我尝试使用TestContext
注释@SpringBootApplication
并使用scanBasePackages
限制组件扫描和/或使用exclude = MyApplicationContextInitializer.class
,但它没有效果太
到目前为止,阻止MyApplicationContextInitializer
在@SpringBootTest
内执行的唯一方法是删除声明MyApplicationContextInitializer
的maven依赖项。
答案 0 :(得分:0)
目前没有办法过滤从工厂加载的ApplicationContextInitializer
类。要在每个测试级别上执行此操作,您需要使用使用不同SpringBootTestContextBootstrapper
的自定义注释。引导程序需要返回一个过滤初始化程序的SpringBootContextLoader
。请随意提出问题,我们可以为SpringBootContextLoader
添加一些受保护的方法,以便您覆盖。