0

我正在编写单元测试并尝试ExecutionCondition仅在特定配置文件专门激活时才用于启用测试。

我创建了我的ExecutionCondition.

class EnabledWithH2ExclusiveExecutionCondition implements ExecutionCondition {

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

    @Autowired
    private Environment environment;
}

但是environment没有注入。

我怎样才能做到这一点?

4

1 回答 1

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
}
于 2019-01-21T08:10:09.777 回答