Java 如何绑定没有@Default限定符的类实例
我正在使用weld junit在测试中使用CDI 如何注入我以前创建的类的实例?就像我在从AbstractBinder扩展而来的Binder中所做的一样 我的测试班:Java 如何绑定没有@Default限定符的类实例,java,junit5,jboss-weld,Java,Junit5,Jboss Weld,我正在使用weld junit在测试中使用CDI 如何注入我以前创建的类的实例?就像我在从AbstractBinder扩展而来的Binder中所做的一样 我的测试班: @EnableWeld public class VersionProcessTest { @WeldSetup public WeldInitiator weld = WeldInitiator .of(VersionProcess.class); @Test publ
@EnableWeld
public class VersionProcessTest {
@WeldSetup
public WeldInitiator weld = WeldInitiator
.of(VersionProcess.class);
@Test
public void GetSolversVersion() throws DirectoryNotFoundException {
weld.event().select(FileService.class).fire(new FileService("workDir", "solverTest"));
String version = weld.select(VersionProcess.class).get().execute();
assertThat("should return version string", version, instanceOf(String.class));
}
}
我的活页夹:
public class TestBinder extends AbstractBinder {
@Override
protected void configure() {
bind(new FileService("test")).to(FileService.class);
bind(SolverVersionApiServiceImpl.class).to(SolverVersionApiService.class);
}
}
所以我真正想要的是为我的注入类声明一个products 为此,我添加了FileService的Products声明(注入类): 并更改WeldInitiator声明以设置包含@Products注释的类,在我的示例中是TestClass,因此:
@WeldSetup
public WeldInitiator weld = WeldInitiator.from(VersionProcess.class, VersionProcessTest.class).activate(RequestScoped.class).build();
瞧,它正在为VersionProcess类进行依赖注入
@WeldSetup
public WeldInitiator weld = WeldInitiator.from(VersionProcess.class, VersionProcessTest.class).activate(RequestScoped.class).build();