2011-11-29 8 views
1

je un test très spécifique:Déploiement des artefacts lors de l'essai cas - JBoss AS

  1. Je dois déployer JAR
  2. faire des trucs de test
  3. déployer un autre JAR
  4. faire plus test

Les JAR doivent être déployés dans cet ordre spécifique (je ne peux pas les déployer avant l'appel de la méthode de test)

Connaissez-vous un moyen d'effectuer un tel scénario dans un environnement proche de JUnit? Je sais que 1. peut être définitivement fait dans Arquillian mais je ne sais pas s'il y a une possibilité d'effectuer un autre déploiement dans la méthode de test.

Répondre

0

La méthode de test vient juste d'être exécutée - vous devez également pouvoir la déployer à partir de là. Si vous avez déjà configuré le paramétrage pour effectuer des tests de phase, que cela fonctionne à partir du test, c'est facile.

+0

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

3

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 
} 
Questions connexes