如何将环境注入 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
}
我正在编写单元测试并尝试使用 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
}