【问题标题】:Specifying classes loading order in @ContextConfiguration in JUnit test cases在 JUnit 测试用例的 @ContextConfiguration 中指定类加载顺序
【发布时间】:2015-06-23 12:45:15
【问题描述】:

我正在使用 junit 4.11 和 spring-test-4.1.5 来编写集成测试用例。我正在使用@ContextConfiguration 注释来加载配置。就像,

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes ={ApplicationConfig.class,SpringConfiguration.class }, initializers = {CustomProfileResolver.class, AppInitializer.class}, loader = SpringApplicationContextLoader.class)

如您所见,我使用了两个配置类。 我面临的问题是我想在ApplicationConfig.class 之前加载SpringConfiguration.class。我尝试颠倒订单,但没有奏效。此处不能指定@order。

那么如何排序这些配置类的加载,可以吗?

【问题讨论】:

  • 您最好定义一个配置类,例如TestConfig.class 其中你 @Import 其他相关配置,例如@Import({ApplicationConfig.class,SpringConfiguration.class}) public class TestConfig {}
  • @Anand j。 Kadhi,您的 SpringConfiguration.class 的 Maven 依赖项是什么?

标签: java spring junit spring-test


【解决方案1】:

@ContextConfiguration 及其支持类(例如,MergedContextConfigurationAnnotationConfigContextLoaderAbstractTestContextBootstrapper 等)旨在保留通过 @987654328 的 classes 属性声明的 @Configuration 类的原始顺序@。

因此,如果您可以验证地证明颠倒您的 SpringConfigurationApplicationConfig 类的顺序不会导致首先处理 SpringConfiguration,那么您在 Spring 中发现了一个错误。

如果您发现了错误,请在JIRA 中报告。

谢谢,

山姆

【讨论】:

    【解决方案2】:

    使用@ContextHierarchy

    @ContextHierarchy({
       @ContextConfiguration(classes = {SpringConfiguration.class}),
       @ContextConfiguration(classes = {ApplicationConfig.class})
    }
    

    【讨论】:

    • 在哪里可以找到 SpringConfiguration.class?什么maven依赖?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多