spring - 如何将来自规则的值注入(inject)测试 Spring 上下文?

标签 spring testing junit spring-test junit-rule

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

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

 @ClassRule 
 static PluginThatSetsUpSomethingEmbedded pluginRule = new PluginThatSetsUpSomethingEmbedded();



}

现在我的一个 Spring bean 需要一些只能从规则中得出的东西,比如:

pluginRule.getEmbeddedToolConfig()

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

最佳答案

我建议你使用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) {
    }


}

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

关于spring - 如何将来自规则的值注入(inject)测试 Spring 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31481294/

相关文章:

java - 用于生产的外部容器中的 Spring Boot 嵌入式容器或 war 文件

scala - 如何使用 SBT 下载静态文件并将其添加到项目中

azure - 如何使用 Azure DevOps 监控测试进度?

java - 如何根据 JUnit 中的测试大小对测试进行分类

java - 当 header 看起来正确时,为什么 Springframework 返回空主体?

Spring 3.0 每个角色都有不同的成功页面

java - Spring Boot rest API 编码错误

ruby-on-rails - Rspec:测试嵌套 Controller

java - 如何从单个类执行多个 JUnit 测试套件?

java - 使用 mockito 进行 Spring 服务单元测试