我有一个非常具体的测试用例:
必须按照特定的顺序部署JAR(我无法在调用测试方法之前部署它们)
您是否知道在某些类似JUnit的环境中执行此类场景的方法? 我知道1.绝对可以在Arquillian中完成,但我不知道是否有可能在测试方法中执行另一个部署。
答案 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)
测试方法刚刚执行 - 此外,您必须能够从那里进行部署。我已经通过设置阶段测试已经设置了设备,是否可以从测试中轻松实现