Как внедрить среду в 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
}