Arquillian 中的条件部署
Conditional Deployment in Arquillian
查看 Arquillian 文档,我知道我可以使用 @ArquillianSuiteDeployment 和 @Deployment 注释将我想要的 jars/wars 部署到容器。示例:
@ArquillianSuiteDeployment
public class MyDeployer {
@Deployment(name = "myapp", order = 1, testable = false)
public static Archive<?> myDeploymentJar() {
final File file = Maven.configureResolver().fromFile(System.getProperty("settings.xml"))
.loadPomFromFile("pom.xml").resolve("com.myapp:test-app").withoutTransitivity()
.asSingleFile();
final JavaArchive jar = ShrinkWrap.createFromZipFile(JavaArchive.class, file);
final JavaArchive archive = ShrinkWrap.create(JavaArchive.class, "test-app.jar").merge(jar);
return archive;
}
}
让我们推断我还有两个我想部署的 jar,但在同一个测试中永远不会在一起,JAR-A 和 JAR-C。
@Test
@RunAsClient
public void testOne() {
// deploy JAR-A before all others, but do not deploy JAR-C
}
@Test
@RunAsClient
public void testTwo() {
// deploy JAR-C before all others, but do not deploy JAR-A
}
是否可以引入与我的测试一起进行的条件@Deployment?
这是一个有趣的用例。
部署发生在测试执行之前,因此目前无法仅通过使用注释来实现它。
但是,您可以使用 Deployer
服务以编程方式控制部署。
@Deployment(name = "JAR-C", managed = false)
public static WebArchive create() {
return ShrinkWrap.create(JavaArchive.class);
}
@ArquillianResource
private Deployer deployer;
@Test
public void should_work() {
deployer.deploy("JAR-C");
// test
deploy.undeploy("JAR-C");
}
重要的事实是您必须指示 Arquillian 不为您管理此部署,这就是 managed = false
标志在 @Deployment(name = "X", managed = false)
.
中的作用
希望对您有所帮助。
查看 Arquillian 文档,我知道我可以使用 @ArquillianSuiteDeployment 和 @Deployment 注释将我想要的 jars/wars 部署到容器。示例:
@ArquillianSuiteDeployment
public class MyDeployer {
@Deployment(name = "myapp", order = 1, testable = false)
public static Archive<?> myDeploymentJar() {
final File file = Maven.configureResolver().fromFile(System.getProperty("settings.xml"))
.loadPomFromFile("pom.xml").resolve("com.myapp:test-app").withoutTransitivity()
.asSingleFile();
final JavaArchive jar = ShrinkWrap.createFromZipFile(JavaArchive.class, file);
final JavaArchive archive = ShrinkWrap.create(JavaArchive.class, "test-app.jar").merge(jar);
return archive;
}
}
让我们推断我还有两个我想部署的 jar,但在同一个测试中永远不会在一起,JAR-A 和 JAR-C。
@Test
@RunAsClient
public void testOne() {
// deploy JAR-A before all others, but do not deploy JAR-C
}
@Test
@RunAsClient
public void testTwo() {
// deploy JAR-C before all others, but do not deploy JAR-A
}
是否可以引入与我的测试一起进行的条件@Deployment?
这是一个有趣的用例。
部署发生在测试执行之前,因此目前无法仅通过使用注释来实现它。
但是,您可以使用 Deployer
服务以编程方式控制部署。
@Deployment(name = "JAR-C", managed = false)
public static WebArchive create() {
return ShrinkWrap.create(JavaArchive.class);
}
@ArquillianResource
private Deployer deployer;
@Test
public void should_work() {
deployer.deploy("JAR-C");
// test
deploy.undeploy("JAR-C");
}
重要的事实是您必须指示 Arquillian 不为您管理此部署,这就是 managed = false
标志在 @Deployment(name = "X", managed = false)
.
希望对您有所帮助。