Vous pouvez le faire dans Arquillian en utilisant l'API Deployer dans votre méthode de test.
D'abord, vous devez définir votre @Deployment à ne pas être géré par Arquillian:
@Deployment(name = "X", managed = false)
public static WebArchive manualDeployment() {
return ShrinkWrap.create(WebArchive.class)....
}
L'étape suivante consisterait à injecter un Deployer:
@ArquillianResource
private Deployer deployer;
Ensuite, à partir de votre méthode @Test vous pouvez appeler:
@Test
public void shouldBeAbleToDeploy() {
deployer.deploy("X")
}
Si votre déploiement X est configuré pour le test en conteneur (@ Deployment.t) estable = true (comportement par défaut)), vous pouvez faire exécuter la prochaine méthode @Test dans le déploiement que vous venez de déployer.
@Test
public void shouldBeAbleToDeploy() {
deployer.deploy("X");
}
@Test @OperateOnDeployment("X")
public void shouldNowBeInDeploymentX() {
// we're now inside X
}
Par TestMethods par défaut JUnit sont exécutées dans un ordre aléatoire, mais l'intégration Arquillian JUnit fournissent une annotation @InSequence (n), vous pouvez utiliser pour forcer l'ordre d'exécution.
@Test @InSequence(1)
public void shouldBeAbleToDeploy() {
deployer.deploy("X");
}
@Test @InSequence(2) @OperateOnDeployment("X")
public void shouldNowBeInDeploymentX() {
// we're now inside X
}
Je sais que la méthode est juste exécutée. Je me demandais s'il y avait un moyen de configurer Arquillian (ou tout autre test-env) pour effectuer le déploiement dans la méthode de test. Dans Arquillian, vous pouvez définir plusieurs déploiements avec @Deployment et choisir lequel utiliser lors de l'appel de la méthode de test. S'il n'y a pas de telle possibilité je devrais écrire le code dépendant du serveur pour le déploiement des choses, que j'aimerais éviter. – Pidzama