The*_*Cat 3 java guice cucumber-jvm
我正在尝试在我的步骤定义中使用 DI。我有一个模块,
public class MyModule extends AbstractModule
{
private final static MyInterface INSTANCE = new MyInterfaceImpl();
@Override
protected void configure()
{
bind(MyInterface.class).toInstance(INSTANCE);
}
}
Run Code Online (Sandbox Code Playgroud)
并希望将此实例注入步骤定义的构造函数中。
public class MyStepDefs
{
private final MyInterface instance;
@Inject
public MyStepDefs(MyInterface instance)
{
this.instance = instance
}
}
Run Code Online (Sandbox Code Playgroud)
我想我需要使用cucumber-guice.properties 文件来配置GuiceFactory,但我真的不知道这是什么?目前我得到的错误是,
java.lang.NoClassDefFoundError: javax/inject/Singleton
at cucumber.runtime.java.guice.GuiceFactory$CucumberModule.configure(GuiceFactory.java:86)
Run Code Online (Sandbox Code Playgroud)
我还应该使用 Provider 进行构造函数注入吗?
从 Cucumber-guice v1.2.4 开始,这略有改变。首先配置文件改名了,现在是cucumber.properties.
其次,现在除了构建模块之外,您还必须构建一个扩展类并将其cucumber.runtime.java.guice.InjectorSource设置为guice.injector-source属性文件中的值。因此,除了您已经创建的两个类之外,您还必须创建第三个类:
public class MyInjectorSource implements InjectorSource {
@Override
public Injector getInjector() {
return Guice.createInjector(Stage.PRODUCTION, CucumberModules.createScenarioModule(), new MyModule());
}
}
Run Code Online (Sandbox Code Playgroud)
然后cucumber.properties将 guice.injector-source 设置为这个新类的完全限定名称。cucumber.properties应该像以前一样在src/main/resources(或src/test/resources取决于您的要求)。
当然,您仍然需要pom.xml文件中的依赖项。
| 归档时间: |
|
| 查看次数: |
5920 次 |
| 最近记录: |