首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDI,cdi-单位。异常尝试注入接口

CDI,cdi-单位。异常尝试注入接口
EN

Stack Overflow用户
提问于 2017-10-30 14:57:28
回答 1查看 482关注 0票数 1

我使用cdi单元库测试类。考试班:

代码语言:javascript
复制
@RunWith(CdiRunner.class)
public class IAktResponseMapperTest {
    @Inject
    private ITestCDI testCDI;

    @Test
    public void testCDI(){
        testCDI.testCDI();
    }
}

ITestCDI接口:

代码语言:javascript
复制
public interface ITestCDI {
    void testCDI();
}

TestCDI类:

代码语言:javascript
复制
@ApplicationScoped
public class TestCDI implements ITestCDI {
    public void testCDI() {
        System.out.println("testCDI");
    }
}

所以,在运行这个测试时,我得到了错误:

代码语言:javascript
复制
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,就可以了。如何使界面工作?谢谢你帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-31 08:30:49

CDI不扫描包的所有类,因此不知道ITestCDIITestCDI实现。您可以使用@AdditionalClasses@AdditionalPackages@AdditionalClasspath注释使用CDI控制CDI环境.

在您的示例中,添加例如@AdditionalClasses(TestCDI.class)注释:

代码语言:javascript
复制
@RunWith(CdiRunner.class)
@AdditionalClasses(TestCDI.class) 
public class IAktResponseMapperTest {
    @Inject
    private ITestCDI testCDI;

    @Test
    public void testCDI(){
        testCDI.testCDI();
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47018338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档