如何将环境注入执行条件

时间:2019-01-21 07:27:17

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

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

我创建了ExecutionCondition

class EnabledWithH2ExclusiveExecutionCondition implements ExecutionCondition {

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

    @Autowired
    private Environment environment;
}

但是没有注入environment

我该怎么做?

1 个答案:

答案 0 :(得分: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
}