默认上下文配置

如在 组件类XML资源Groovy脚本部分所述,TestContext框架会尝试定位默认的上下文配置,如果你没有明确指定从@Configuration个类、XML配置文件或Groovy 脚本加载测试的ApplicationContextspring-doc.cadn.net.cn

但是,由于检测算法中的一个错误,默认的上下文配置对于超类或封闭类当前会被忽略,如果类型层次结构或封闭类层次结构(针对 @Nested 个测试类)没有声明 @ContextConfigurationspring-doc.cadn.net.cn

从Spring框架7.1开始,TestContext框架将可靠地检测给定测试类上方类型层次结构或封闭类层次结构中的所有 默认上下文配置。因此,在升级到7.1后,测试套件可能会遇到问题。例如,如果超类或封闭类中的静态嵌套@Configuration类因上述错误而被忽略,在7.1中修复该错误后,该@Configuration类将不再被忽略,这可能导致结果ApplicationContext中出现意外的bean或测试直接失败。spring-doc.cadn.net.cn

在此期间,TestContext框架会在遇到当前被忽略的默认上下文配置时记录警告信息——例如,一个@Configuration类或XML配置文件。本节剩余部分提供了如何处理这类问题的指导,以便在测试套件中遇到警告时进行解决。spring-doc.cadn.net.cn

使用@Nested注解受影响的子类或@ContextConfiguration类,您可以自己控制并指定层次结构中哪些类实际上旨在贡献上下文配置。spring-doc.cadn.net.cn

如果不希望处理静态嵌套的@Configuration类,您可以:spring-doc.cadn.net.cn

同样地,如果您在使用默认的XML配置文件或Groovy脚本时遇到问题,并且不希望它们被处理,您可以:spring-doc.cadn.net.cn

  • 仅在您确实希望处理此类资源的地方应用 @ContextConfigurationspring-doc.cadn.net.cn

  • 将资源文件重命名为不符合默认命名约定的名称(例如,对于XML配置文件可以使用*-context.xml),以防止它们被误解释为默认配置文件。spring-doc.cadn.net.cn

  • 将受影响的资源文件移动到项目中的不同包或文件系统位置。spring-doc.cadn.net.cn