1

我想使用 Arquillian + Selenium 来测试我的 JSF 页面。我的项目结构如下:

/src/main/java - my java classes
/src/main/resources
/src/main/resources/META-INF - all imgs, css, js and custom composite JSF components
/src/main/webapp/pages - my xhtml pages
/src/main/webapp/WEB-INF - descriptors, JSF template

我想用我需要的所有东西构建一个测试部署档案,即所有资源,我要测试的特定 xhtml 页面,WEB-INF 目录。除了 META-INF 资源之外,我已经成功地复制了所有这些资源。有什么方法可以告诉 shrinkwrap 将整个 META-INF 目录带入部署?谢谢你。

4

2 回答 2

4

另一个解决方案(可以在http://arquillian.org/guides/functional_testing_using_graphene/找到)

archive.merge(ShrinkWrap.create(GenericArchive.class)
   .as(ExplodedImporter.class)
   .importDirectory(WEBAPP_SRC).as(GenericArchive.class),
   "/", Filters.include("META-INF\\.*\\.xml"));
于 2014-07-17T13:16:27.300 回答
3

您可以执行以下操作:

File[] files = new File("src/main/resources/META-INF").listFiles();
WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war");
for (File file : files) {
    war.addAsManifestResource(file);
}
war.writeTo(System.out, Formatters.VERBOSE);

假设您在 src/main/resources/META-INF 中有以下文件:

beans.xml
configuration1.xml
configuration2.xml

...它会输出:

test.war:
/META-INF/
/META-INF/beans.xml
/META-INF/configuration2.xml
/META-INF/configuration1.xml

如果您有一个嵌套的多模块项目,则可能需要调整传递给 File 构造函数的路径。

于 2014-03-14T13:32:50.427 回答