1

Arquillian を使用して、テストの依存関係を注入しています。Bean をテスト クラスに直接注入すると問題なく動作しますが、Bean に独自の依存関係があり、注入する必要がある場合、それらの依存関係は注入されません。

例: FacLptConfiguration Bean はテスト クラスに正しくインポートされますが、CfdFileCreator Bean には挿入されません。インジェクションが機能することを確認するためだけに 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;
4

1 に答える 1

7

問題はbeans.xmlの場所だと思います。Web アーカイブの場合はWEB-INF/beans.xmlにする必要があります。使用する:

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

https://community.jboss.org/thread/175404も参照してください。

于 2012-10-02T14:40:14.753 に答える