混合使用组件类、XML 和 Groovy 脚本
有时可能需要混合使用组件类(通常是 @Configuration 类)、XML配置文件或Groovy脚本来配置测试的 ApplicationContext 。例如,如果出于遗留原因在生产中使用XML配置,您可能会决定为测试中的特定Spring管理组件使用 @Configuration 类进行配置,反之亦然。
此外,一些第三方框架(如Spring Boot)为同时从不同类型资源加载ApplicationContext提供了顶级支持
(例如,@Configuration类、XML配置文件和Groovy脚本)。历史上,Spring框架在标准部署中并未支持这一特性。
因此,Spring框架在spring-test模块中提供的大多数SmartContextLoader实现每个测试上下文仅支持一种资源类型。
然而,这并不意味着您不能混合使用资源类型。一般规则的一个例外是GenericGroovyXmlContextLoader和
GenericGroovyXmlWebContextLoader同时支持XML配置文件和Groovy脚本。此外,第三方框架可能会选择通过@ContextConfiguration支持
classes和locations的声明,而且,借助TestContext框架的标准测试支持,您有以下选项。
如果您希望使用 @Configuration 类和资源位置(例如,XML或Groovy)来配置测试,您必须选择一个作为入口点,并且该入口点必须导入或包含其他文件。例如,在一个 @Configuration 类中,您可以使用 @ImportResource 来导入XML配置文件或Groovy脚本;而在XML或Groovy脚本中,您可以使用组件扫描或定义为常规Spring Bean的方式包含 @Configuration 类。请注意,此行为在语义上等同于您在生产环境中如何配置应用程序:在生产环境配置中,您定义了一组 @Configuration 类或一组XML或Groovy资源位置,从中加载您的生产 ApplicationContext,但您仍然有自由导入或包含其他类型的配置。