我使用cdi单元库测试类。考试班:
@RunWith(CdiRunner.class)
public class IAktResponseMapperTest {
@Inject
private ITestCDI testCDI;
@Test
public void testCDI(){
testCDI.testCDI();
}
}ITestCDI接口:
public interface ITestCDI {
void testCDI();
}TestCDI类:
@ApplicationScoped
public class TestCDI implements ITestCDI {
public void testCDI() {
System.out.println("testCDI");
}
}所以,在运行这个测试时,我得到了错误:
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type ITestCDI with qualifiers @Default
at injection point [UnbackedAnnotatedField] @Inject private ru.nwth.pio.personal_area.accounting.mapper.IAktResponseMapperTest.testCDI
at ru.nwth.pio.personal_area.accounting.mapper.IAktResponseMapperTest.testCDI(IAktResponseMapperTest.java:0)但是,如果我直接注入TestCDI类而不是接口ITestCDI,就可以了。如何使界面工作?谢谢你帮忙!
发布于 2017-10-31 08:30:49
CDI不扫描包的所有类,因此不知道ITestCDI的ITestCDI实现。您可以使用@AdditionalClasses、@AdditionalPackages或@AdditionalClasspath注释使用CDI控制CDI环境.
在您的示例中,添加例如@AdditionalClasses(TestCDI.class)注释:
@RunWith(CdiRunner.class)
@AdditionalClasses(TestCDI.class)
public class IAktResponseMapperTest {
@Inject
private ITestCDI testCDI;
@Test
public void testCDI(){
testCDI.testCDI();
}
}https://stackoverflow.com/questions/47018338
复制相似问题