在测试用例期间部署工件 - JBoss AS

时间:2011-11-29 11:18:27

标签: java java-ee jboss jboss-arquillian

我有一个非常具体的测试用例:

  1. 我必须部署JAR
  2. 做一些测试工作
  3. 部署另一个JAR
  4. 做更多测试
  5. 必须按照特定的顺序部署JAR(我无法在调用测试方法之前部署它们)

    您是否知道在某些类似JUnit的环境中执行此类场景的方法? 我知道1.绝对可以在Arquillian中完成,但我不知道是否有可能在测试方法中执行另一个部署。

2 个答案:

答案 0 :(得分:3)

您可以使用TestMethod中的Deployer api在Arquillian中执行此操作。

首先,您必须将您的@Deployment定义为不受Arquillian管理:

@Deployment(name = "X", managed = false)
public static WebArchive manualDeployment() {
    return ShrinkWrap.create(WebArchive.class)....
}

下一步是注入Deployer:

@ArquillianResource
private Deployer deployer;

然后在你的@Test方法中你可以调用:

@Test
public void shouldBeAbleToDeploy() {
    deployer.deploy("X")
}

如果为容器内测试设置了部署X(@ Deployment.testable = true(默认行为)),则可以在刚刚部署的部署中执行下一个@Test方法。

@Test
public void shouldBeAbleToDeploy() {
    deployer.deploy("X");
}

@Test @OperateOnDeployment("X")
public void shouldNowBeInDeploymentX() {
    // we're now inside X
}

默认情况下,JUnit TestMethods以随机顺序执行,但Arquillian JUnit集成提供了一个@InSequence(n)注释,可用于强制执行顺序。

@Test @InSequence(1)
public void shouldBeAbleToDeploy() {
    deployer.deploy("X");
}

@Test @InSequence(2) @OperateOnDeployment("X")
public void shouldNowBeInDeploymentX() {
    // we're now inside X
}

答案 1 :(得分:0)

测试方法刚刚执行 - 此外,您必须能够从那里进行部署。我已经通过设置阶段测试已经设置了设备,是否可以从测试中轻松实现