1

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

  1. 我必须部署 JAR
  2. 做一些测试的东西
  3. 部署另一个 JAR
  4. 再做一些测试

JAR 必须按此特定顺序部署(我不能在调用测试方法之前同时部署两者)

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

4

2 回答 2

3

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

首先,您必须将 @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
}
于 2011-12-09T16:52:53.737 回答
0

测试方法刚刚执行 - 而且,您必须能够从那里进行部署。如果您已经通过设置阶段测试设置了部署的东西,那么它是否可以通过测试很容易

于 2011-11-29T12:29:24.587 回答