当前位置: 首页 > 知识库问答 >
问题:

配置cucumber guice

董品
2023-03-14

我试图在步骤定义中使用DI。我有一个模块,

public class MyModule extends AbstractModule
{
    private final static MyInterface INSTANCE = new MyInterfaceImpl();

    @Override
    protected void configure()
    {
        bind(MyInterface.class).toInstance(INSTANCE);
    }
}

并希望将此实例注入步骤定义的构造函数中。

public class MyStepDefs
{
    private final MyInterface instance;

    @Inject
    public MyStepDefs(MyInterface instance)
    {
        this.instance = instance
    }
}

我想我需要使用cucumber-guice.properties文件来配置GuiceFactory,但是我不知道这是什么?目前我得到的错误是,

java.lang.NoClassDefFoundError: javax/inject/Singleton
    at cucumber.runtime.java.guice.GuiceFactory$CucumberModule.configure(GuiceFactory.java:86)

我还应该使用提供程序进行构造函数注入吗?

共有2个答案

孟光耀
2023-03-14

< code>MyModule和< code>MyStepDefs类很好。< code > NoClassDefFoundError 是由于没有将最新版本的Guice作为依赖项添加而导致的。我加了这个,

<dependency>
  <groupId>com.google.inject</groupId>
  <artifactId>guice</artifactId>
  <version>3.0</version>
</dependency>

到我的<code>POM.xml<code>。

cucumber-guice.properties 文件位于 src/main/resources 文件夹中。此文件由 GuiceFactory 类读取,并应包含要使用的 Guice 模块的属性。例如..

guiceModule=com.felix.cucumber.MyModule

公冶威
2023-03-14

从cucumber-guice v1.2.4开始,这种情况略有改变。首先,配置文件改变了它的名字,现在它是< code>cucumber.properties。

其次,现在除了构建模块之外,还必须构建一个扩展cucumber.runtime.java.guice的类。InjectorSource并将其设置为<code>guice的值。属性文件中的喷油器源代码。因此,除了已经创建的两个类之外,还必须创建第三个类:

public class MyInjectorSource implements InjectorSource {

       @Override
       public Injector getInjector() {
            return Guice.createInjector(Stage.PRODUCTION, CucumberModules.createScenarioModule(), new MyModule());
       }
}

然后在<代码>cucumber中。属性设置为guice。注入器源到这个新类的完全限定名<代码>cucumber。属性应该像以前一样位于src/main/resources(或src/test/resource,具体取决于您的需求)。

当然,您仍然需要pom.xml文件中的依赖项。

 类似资料:
  • 丰富的过滤器插件的存在是 logstash 威力如此强大的重要因素。名为过滤器,其实提供的不单单是过滤的功能。在本章我们就会重点介绍几个插件,它们扩展了进入过滤器的原始数据,进行复杂的逻辑处理,甚至可以无中生有的添加新的 logstash 事件到后续的流程中去!

  • Codec 是 logstash 从 1.3.0 版开始新引入的概念(Codec 来自 Coder/decoder 两个单词的首字母缩写)。 在此之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入 期处理不同类型的数据,这全是因为有了 codec 设置。 所以,这里需要纠正之前的一个概念。Logstash 不只是一个input | filter | outpu

  • 在 “Hello World” 示例中,我们已经见到并介绍了 logstash 的运行流程和配置的基础语法。从这章开始,我们就要逐一介绍 logstash 流程中比较常用的一些插件,并在介绍中针对其主要适用的场景,推荐的配置,作一些说明。 限于篇幅,接下来内容中,配置示例不一定能贴完整。请记住一个原则:Logstash 配置一定要有一个 input 和一个 output。在演示过程中,如果没有写明

  • exVim 的配色由三部分组成: 你自己的Vim配色, exVim 插件的语法高亮和插件的配色. 你可以按照以下步骤来定制你的配色: 安装你的配色 exVim 提供了三种方法安装你的自定义配色 方法1. 在 ex-colorscheme 中安装(推荐) 首选的方法是在 ex-colorschemes 中安装自己的配色, 这种方法仅仅需要你把自己的配色文件放到 vimfiles/bundle/ex-

  • 目录: 在配置项目yml文件中: 问题: null 客户端YML: 有没有人知道我怎样才能在这两种情况下只带一个配置文件?

  • 因为有很多不同配置 redis 的方式,StackExchange.Redis 提供了一个丰富的配置模型,当调用 Connect (或 ConnectAsync )时调用它。 var conn = ConnectionMultiplexer.Connect(configuration); 这里的 configuration 可以是下面的任意一个: 一个 ConfigurationOptions 实