You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Cucumber后guice.injector-source弃用,InjectorSource配置求助

解决方案:Cucumber Guice 7.x 废弃guice.injector-source后的配置调整

针对你遇到的问题,Cucumber 7+版本的guice模块确实移除了对cucumber.properties中guice.injector-source配置项的支持,改为自动扫描glue路径下的InjectorSource实现类,具体调整步骤如下:

  • 确认自定义InjectorSource实现
    确保你的实现类正确实现io.cucumber.guice.InjectorSource接口,guice 4.1.0的API完全兼容,示例代码:

    public class CustomInjectorSource implements InjectorSource {
        @Override
        public Injector getInjector() {
            // 替换为你的Guice模块配置
            return Guice.createInjector(new YourServiceModule());
        }
    }
    

    注意类必须是public权限,且无私有构造方法,保证Cucumber能正常实例化。

  • 将实现类移至glue扫描路径
    把上述CustomInjectorSource类放到你Cucumber配置中指定的glue包下(或其子包)。比如你的glue配置是com.yourproject.stepdefs,可以把类放到com.yourproject.stepdefs.injectors子包,Cucumber会自动扫描所有glue路径下的InjectorSource实现类并绑定。

  • 清理旧配置
    删除cucumber.properties中的guice.injector-source=xxx配置项,避免残留配置干扰。

  • 验证glue路径配置
    确保build.gradle或Cucumber运行配置中的glue参数包含存放InjectorSource类的包:

    • 若用build.gradle配置:
      tasks.withType(Test) {
          systemProperty "cucumber.glue", "com.yourproject.stepdefs,com.yourproject.stepdefs.injectors"
      }
      
    • 若用CucumberOptions注解(在测试启动类上):
      @CucumberOptions(
          glue = {"com.yourproject.stepdefs", "com.yourproject.stepdefs.injectors"},
          // 其他配置如features路径等
      )
      public class CucumberTestRunner {}
      

另外,cucumber-guice 7.8.1与guice 4.1.0是兼容的,无需强制升级guice到5.x版本,你可以先完成上述配置解决绑定问题,后续再处理guice升级的guice-no_app.jar问题。

内容的提问来源于stack exchange,提问作者NoiseGate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:25:28