Как внедрить среду в ExecutionCondition - PullRequest
0 голосов
/ 21 января 2019

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

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

class EnabledWithH2ExclusiveExecutionCondition implements ExecutionCondition {

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

    @Autowired
    private Environment environment;
}

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

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

1 Ответ

0 голосов
/ 21 января 2019

Поскольку ваш 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
}
...