2016-12-07 3 views
0

J'essaie de tester une application héritée en utilisant TestNG et Arquillian. Il y a une contrainte à cause de laquelle j'ai besoin d'avoir deux méthodes différentes annotées avec @Deployment.Méthodes de déploiement multiples dans une classe de test

Méthode 1 (pour déployer uniquement le code de test et le lancer contre l'application, déjà déployé et en cours d'exécution dans wildfly 10)

@Deployment 
    public static WebArchive createDeployment() { 
     WebArchive war = ShrinkWrap.create(WebArchive.class).addClass(Test.class) 
       .addAsManifestResource(new File("jboss-deployment-structure.xml")) 
       .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"); 
     return war; 
    } 

Méthode 2 (pour le déploiement de l'ensemble de l'application ainsi que le code de test pour un wildfly à distance 10 serveur)

@Deployment 
    public static EnterpriseArchive createEARDeployment(){ 
     EnterpriseArchive ear = ShrinkWrap.createFromZipFile(EnterpriseArchive.class, new File("some_archive.ear")) 
       .addAsModule(Testable.archiveToTest(ShrinkWrap.create(WebArchive.class, "test.war") 
          .addClass(SoftCountFacadeTest.class) 
          .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"))); 
     return ear; 
    } 

Mon exigence est que Arquillian devrait être en mesure de choisir l'une de ces méthodes de déploiement basées sur une configuration. Pour le moment, je commente la méthode de déploiement qui ne doit pas être exécutée. Le @ Deployment.order, donné here, n'est d'aucune utilité car tous les déploiements seront toujours exécutés seulement leur ordre d'exécution peut être contrôlé.

Toute aide est fortement appréciée.

Répondre

1

peut-être vous pouvez (vous devez remplir la condition de l'oreille par vous-même):

@Deployment 
public static Archive<?> createDynamicDeployment() { 
    if(<ear condition>) { 
    EnterpriseArchive ear = ShrinkWrap.createFromZipFile(EnterpriseArchive.class, new File("some_archive.ear")) 
      .addAsModule(Testable.archiveToTest(ShrinkWrap.create(WebArchive.class, "test.war") 
         .addClass(SoftCountFacadeTest.class) 
         .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"))); 
    return ear; 
    } else { 
    WebArchive war = ShrinkWrap.create(WebArchive.class).addClass(Test.class) 
      .addAsManifestResource(new File("jboss-deployment-structure.xml")) 
      .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"); 
    return war; 
    } 
} 
+0

je tentais de trouver une solution à l'intérieur des fonctionnalités de ShrinkWarp et Arquillian. Quoi qu'il en soit, cela fonctionnera dans mon cas. Merci beaucoup :-) –