我正在使用Arquillian为我的测试注入依赖项。如果我将bean直接注入我的测试类,它可以正常工作,但如果bean必须注入自己的依赖项,那么这些依赖项就不会被注入。
例如:FacLptConfiguration bean正确导入我的Test Class,但它没有被注入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;
答案 0 :(得分:7)
我认为您的问题是 beans.xml 的位置。对于Web存档,它应该是 WEB-INF / beans.xml 。使用:
addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))