Нулевое значение для инъекции @EJB в тестовом примере JUnit

Я использую WAS 8.0, EJB 3.1, CDI и встраиваемый контейнер EJB в MyEclipse 10.0. Также есть beans.xml, определенный и встраиваемый jar-контейнер в пути к классам. Получение нулевого значения среды выполнения для ссылки EJB (курс) в тестовом классе.

открытый класс CourseTest расширяет TestCase {

@EJB    
private Course course;

@Before
public void setUp() throws Exception {
    EJBContainer.createEJBContainer().getContext().bind("inject", this);
}

@Test
public void test() {

    // Was the EJB injected?
    assertTrue(course != null);

person user1521268    schedule 12.07.2012    source источник


Ответы (1)


Ваш тестовый класс не создается контейнером, поэтому инъекция не будет выполнена. Вам нужно будет вручную найти EJB из EJBContainer.createEJBContainer().getContext().

(Кроме того, EJBContainer API допускает только один активный контейнер EJB на процесс. Я бы предложил сохранить результат EJBContainer.createEJBContainer() в поле и закрыть его из метода @After.)

person Brett Kail    schedule 14.07.2012