【问题标题】:Unable to use serenity-cucumber (aka thucydides-cucumber) along with cucumber-guice无法使用 serenity-cucumber (aka thucydides-cucumber) 和 cucumber-guice
【发布时间】:2015-03-12 01:59:27
【问题描述】:

我已经创建了 Cucumber 测试项目并通过 cucumber-guice 成功配置了 Guice 支持。当我添加 serenity-cucmber 并使用 CucumberWithSerenity 配置测试运行器时,出现错误:

More than one Cucumber ObjectFactory was found in the classpath

You probably may have included, for instance, cucumber-spring AND cucumber-guice as part of
your dependencies. When this happens, Cucumber falls back to instantiating the
DefaultJavaObjectFactory implementation which doesn't provide IoC.
In order to enjoy IoC features, please remove the unnecessary dependencies from your class path.

原因是有两个 ObjectFactory 实现:

  • cucumber.runtime.java.guice.impl.GuiceFactory(在 cucumber-guice 中)

  • cucumber.runtime.SerenityObjectFactory(在 serenity-cucumber 中)

serenity-cucumber 可以和cucumber guice 一起使用吗?

【问题讨论】:

    标签: guice cucumber-jvm guice-3 thucydides


    【解决方案1】:

    根据 serenity-cucumber 开发人员,我们不能使用 Guice,应该使用 Spring。 https://github.com/serenity-bdd/serenity-cucumber/issues/8

    【讨论】:

      【解决方案2】:

      您可以通过在src/test/resources/cucumber.properties 中添加以下属性来选择ObjectFactory 实现:

      cucumber.api.java.ObjectFactory = cucumber.runtime.java.guice.impl.GuiceFactory
      

      来源:https://cucumber.io/blog/2015/07/08/polymorphic-step-definitions

      请注意,您将失去 Senerity Page 功能。否则,您可以编写自己的 ObjectFactory 类来实现 GuiceFactorySerenityObjectFactory 的功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        相关资源
        最近更新 更多