【问题标题】:How to inject Environment into ExecutionCondition如何将环境注入 ExecutionCondition
【发布时间】:2019-01-21 07:27:17
【问题描述】:

我正在编写单元测试并尝试使用ExecutionCondition 仅在特定配置文件专门激活时启用测试。

我创建了我的ExecutionCondition

class EnabledWithH2ExclusiveExecutionCondition implements ExecutionCondition {

    @Override
    public ConditionEvaluationResult evaluateExecutionCondition(
            final ExtensionContext context) {
        // check the environment
    }

    @Autowired
    private Environment environment;
}

但是environment 没有注入。

我该怎么做?

【问题讨论】:

    标签: spring-boot junit5 spring-boot-test junit5-extension-model


    【解决方案1】:

    因为您的 ExecutionCondition 是由 JUnit5 本身使用反射创建的。它不是由 Spring 管理的,因此 @Autowired 将不起作用。

    您可以调用SpringExtension.getApplicationContext() 获取Spring Context,然后从中获取Environment

    @Override
    public ConditionEvaluationResult evaluateExecutionCondition(final ExtensionContext context){
              Environment env = SpringExtension.getApplicationContext(context).getEnvironment();
            // check the environment
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    相关资源
    最近更新 更多