代码之家  ›  专栏  ›  技术社区  ›  Jin Kwon

如何将环境注入到执行条件中

  •  0
  • Jin Kwon  · 技术社区  · 6 年前

    我正在编写单元测试并尝试使用 ExecutionCondition 仅当特定配置文件以独占方式激活时才启用测试。

    我创造了我 执行条件 .

    class EnabledWithH2ExclusiveExecutionCondition implements ExecutionCondition {
    
        @Override
        public ConditionEvaluationResult evaluateExecutionCondition(
                final ExtensionContext context) {
            // check the environment
        }
    
        @Autowired
        private Environment environment;
    }
    

    但是 environment 未注入。

    我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ken Chan    6 年前

    因为你 ExecutionCondition 是由JUnit5本身使用反射创建的。它不是由Spring管理的,因此 @Autowired 不会起作用。

    你可以打电话 SpringExtension.getApplicationContext() 获取Spring上下文,然后获取 Environment 从:

    @Override
    public ConditionEvaluationResult evaluateExecutionCondition(final ExtensionContext context){
              Environment env = SpringExtension.getApplicationContext(context).getEnvironment();
            // check the environment
    }
    
    推荐文章