【问题标题】:How to inject the value coming from a rule into a test spring context?如何将来自规则的值注入测试弹簧上下文?
【发布时间】:2015-07-17 17:17:15
【问题描述】:

假设你在测试 spring 上下文时遇到以下情况

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ConfigClass.class})
public class IntegrationTest   {

 @ClassRule 
 static PluginThatSetsUpSomethingEmbedded pluginRule = new PluginThatSetsUpSomethingEmbedded();



}

现在我的一个 Spring bean 需要一些只能超出规则的东西,例如:

pluginRule.getEmbeddedToolConfig()

如何为我的 bean 提供该配置,请注意该规则是 ClassRule 并且也是静态的...

【问题讨论】:

    标签: spring testing junit spring-test junit-rule


    【解决方案1】:

    我建议你使用ApplicationContextInitializer,你的测试类会是这样的:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = {ConfigClass.class}, initializers = IntegrationTest.Initializer.class)
    public class IntegrationTest   {
    
     @ClassRule 
     static PluginThatSetsUpSomethingEmbedded pluginRule = new PluginThatSetsUpSomethingEmbedded();
    
     public static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
        @Override
        public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
        }
    
    
    }
    

    在方法初始化中你可以实现你的逻辑。

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2012-07-04
      相关资源
      最近更新 更多