【问题标题】:CDI, cdi-unit. Exception trying inject interfaceCDI,cdi 单元。尝试注入接口的异常
【发布时间】:2018-04-11 14:45:32
【问题描述】:

我使用 cdi-unit 库测试类。 测试类:

@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,就可以了。如何使界面正常工作?感谢您的帮助!

【问题讨论】:

    标签: java-8 cdi junit4 cdi-unit


    【解决方案1】:

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

    在您的情况下,添加例如 @AdditionalClasses(TestCDI.class) 注释:

    @RunWith(CdiRunner.class)
    @AdditionalClasses(TestCDI.class) 
    public class IAktResponseMapperTest {
        @Inject
        private ITestCDI testCDI;
    
        @Test
        public void testCDI(){
            testCDI.testCDI();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-17
      • 1970-01-01
      • 2016-01-19
      • 2016-07-25
      • 1970-01-01
      • 2015-07-05
      • 2013-04-30
      • 2021-05-03
      • 2016-02-14
      相关资源
      最近更新 更多