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