Как внедрить среду в ExecutionCondition

Я пишу юнит-тесты и пытаюсь использовать ExecutionCondition для включения теста только тогда, когда конкретный профиль активирован исключительно.

Я создал свой ExecutionCondition,

class EnabledWithH2ExclusiveExecutionCondition implements ExecutionCondition {

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

    @Autowired
    private Environment environment;
}

Но environment не вводится

Как я могу это сделать?

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
}
Другие вопросы по тегам