如何将环境注入 ExecutionCondition

How to inject Environment into ExecutionCondition

我正在编写单元测试并尝试使用 ExecutionCondition 仅在特定配置文件以独占方式激活时启用测试。

我创建了我的 ExecutionCondition

class EnabledWithH2ExclusiveExecutionCondition implements ExecutionCondition {

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

    @Autowired
    private Environment environment;
}

但是environment没有注入。

我该怎么做?

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

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

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