Java CDI@Inject抛出NullPointerException

Java CDI@Inject抛出NullPointerException,java,nullpointerexception,cdi,Java,Nullpointerexception,Cdi,我正在测试Java 7 CDI的特性,但是当我尝试访问问候语对象时,我得到了一个NullPointerException。如果是Jar,那么这个项目就是Maven项目 这是问候语课程 package greetings; import javax.enterprise.inject.Default; @Default public class Greeting { public void greet(String name) { System.out.println(

我正在测试Java 7 CDI的特性,但是当我尝试访问
问候语
对象时,我得到了一个
NullPointerException
。如果是Jar,那么这个项目就是Maven项目

这是
问候语
课程

package greetings;

import javax.enterprise.inject.Default;
@Default
public class Greeting {
    public void  greet(String name) {
        System.out.println("Hello, " + name + ".");
    }
}
这是我注入bean的测试类

package greetings;

import static org.junit.Assert.assertTrue;
import javax.inject.Inject;
import org.junit.Test;

public class Tester {

    @Inject Greeting greeting;

    @Test
    public void greet()
    {
        greeting.greet("Mark");
        assertTrue(greeting!=null);
    }
}
我还在
src/main/resources/META-INF
文件夹中添加了
beans.xml
文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">

</beans>

当我运行测试时,我在
Tester
类中的标记行得到一个
NullPointerException


你觉得这个问题怎么样?我浏览了很多文档,但似乎通过添加
beans.xml
(已经在类路径中)解决了这个问题

您可以在jUnit测试中使用CDI。选中此项:

您可以在jUnit测试中使用CDI。选中此项:

您可以使用Arquillian对CDI进行单元测试


您可以使用Arquillian对CDI进行单元测试


注入只适用于托管bean(以及一些其他对象,如servlet)。测试类由JUnit实例化,而不是由CDI容器实例化,因此注入不能开箱即用


您需要一个特殊的JUnit运行程序,将依赖项注入到实例化的测试类中-例如,..

注入仅适用于托管bean(以及一些其他对象,如servlet)。测试类由JUnit实例化,而不是由CDI容器实例化,因此注入不能开箱即用


您需要一个特殊的JUnit运行程序将依赖项注入到实例化的测试类中-例如..

JUnit不能直接与CDI一起工作。JUnit不能直接与CDI一起工作。谢谢@Loc Ha,我尝试了CDI单元,bean被正确注入。这是我第一次在Java中使用CDI,所以我有很多东西要学习。谢谢@Loc Ha,我尝试了CDI单元,bean被正确注入。这是我第一次在Java中使用CDI,所以我有很多东西要学。