Невозможно внедрить зависимости внедренного компонента с помощью Arquillian

Я использую Arquillian для внедрения зависимостей для своих тестов. Это работает нормально, если я ввожу bean-компоненты непосредственно в свой тестовый класс, но если bean-компоненты имеют собственные зависимости, которые необходимо внедрить, эти зависимости не внедряются.

Например: компонент FacLptConfiguration правильно импортируется в мой тестовый класс, но не внедряется в компонент CfdFileCreator. Я внедрил FacLptConfigurtion в тестовый класс только для того, чтобы убедиться, что внедрение работает, но пользователем этого класса является CfdFileCreator.

@RunWith(Arquillian.class)
public class CfdFileCreatorArquillianTest {


@Deployment
public static WebArchive createDepolyment() {
    return ShrinkWrap.create(WebArchive.class)
            .addClass(FacLptConfiguration.class)
            .addClass(InterimFileCreator.class)
            .addClass(CfdFileCreator.class)
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml")
            .addAsWebInfResource(new File("C:/aLearn/FacLpt/web/WEB-INF/env-entries.properties"));
}

public static String TEST_FOLDER = "C:/aLearn/FacLpt/src/test/testdata/pruebas/";

@Inject
private FacLptConfiguration facLptConfiguration;

@Inject
private CfdFileCreator cfdFileCreator;


@Test
public void createCfd() {
    System.out.println("in createCFD");
    cfdFileCreator.createCFDFile();
}

}

Эти инъекции не работают:

  @Singleton
  public class CfdFileCreator {


  @Inject
  private InterimFileCreator interimFileCreator;
  @Inject
  private FacLptConfiguration facLptConfiguration;

person aym    schedule 01.10.2012    source источник


Ответы (1)


Я думаю, что ваша проблема заключается в расположении файла beans.xml. Для веб-архива это должен быть WEB-INF/beans.xml. Использовать:

addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))

См. также https://community.jboss.org/thread/175404.

person Hardy    schedule 02.10.2012