gpt4 book ai didi

java - Arquillian 未在 JBOSS 中部署 war 文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:47 24 4
gpt4 key购买 nike

我正在使用 JBoss EAP 6.1 开发 Java EE 应用程序。

使用 Arquillian 运行测试,在使用测试中注入(inject)的方法时,我总是出现空指针异常,并且我发现 ShrinkWrap 无法使用我的类创建 war 文件夹。

这是我的 Arquillian 收缩包装,不会创建 war 文件夹。

@Deployment(name = "Test")
@OverProtocol("Servlet 3.0")
public static Archive<?> createDeployment() {

WebArchive archive = ShrinkWrap
.create(WebArchive.class, "test_archive.war")
.addClass(ArquillianTest.class)
.addPackages(true, "it.payroll.model")
.addPackages(true, "it.payroll.dao")
.addPackages(true, "it.payroll.controller")
.addAsResource("META-INF/persistence.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE,
ArchivePaths.create("beans.xml"));

archive.as(ZipExporter.class).exportTo(
new File("target/test_archive.war"), true);

return archive;
}

感谢您的帮助。

最佳答案

工作文件

@ArquillianSuiteDeployment
public class ArquillianDeploymentHelper {

public static final String DEPLOYMENT_NAME = "test";

private static final Logger LOGGER = LoggerFactory.getLogger(ArquillianDeploymentHelper.class);

private static final String WEBAPP_SRC = "src/main/webapp";
private static final String TEST_RESOURCES_SRC = "src/test/resources";
private static final String POM_FILE = "pom.xml";
private static final String ARCHIVE_NAME = "arquillian-test.war";

@Deployment(name = DEPLOYMENT_NAME)
public static Archive<?> generateDefaultDeployment() {

// Generate the default WAR used by all *IT tests using @OperateOnDeployment("test") annotation
LOGGER.info("Generating " + ARCHIVE_NAME + " archive ...");

PomEquippedResolveStage pom = Maven.resolver().loadPomFromFile(POM_FILE);
ScopeType[] scopes = {ScopeType.COMPILE, ScopeType.IMPORT, ScopeType.TEST}; // no SYSTEM and no PROVIDED
File[] libs = pom.importDependencies(scopes).resolve().using(TransitiveStrategy.INSTANCE).asFile();

WebArchive archive = ShrinkWrap.create(WebArchive.class, ARCHIVE_NAME)
.addAsLibraries(libs)
//.addAsResource(new File(TEST_RESOURCES_SRC, "test-configuration.properties"), "configuration.properties")
.addPackages(true, "com.test")
//.addAsWebInfResource(new File(WEBAPP_SRC, "WEB-INF/web.xml"))
.addAsWebInfResource(new File(WEBAPP_SRC, "WEB-INF/beans.xml"))
.addAsWebInfResource(new File(WEBAPP_SRC, "WEB-INF/jboss-web.xml"))
.addAsWebInfResource(new File(TEST_RESOURCES_SRC, "persistence.xml"), "classes/META-INF/persistence.xml");
//.addAsManifestResource(new File(WEBAPP_SRC, "META-INF/jboss-deployment-structure.xml"));

// No need to log the content anymore, the archive is kept in target directory
// "deploymentExportPath" variable in arquillian.xml
// LOGGER.info(archive.toString(true));

LOGGER.info(archive.toString(true));

return archive;
}
}

关于java - Arquillian 未在 JBOSS 中部署 war 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39307221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com