2016-06-29 5 views
0

J'ai une application 2.2.2 seam que je migre vers jboss eap 6 (AS7). Comme les tests étaient dans l'ancien conteneur jboss embedded, j'ai donc commencé à utiliser arquillian mais je n'ai pas pu découvrir hot pour créer un package de déploiement.arquillian + shrinkwrap + seam: comment créer un package de déploiement

C'est l'une de mes tentatives:

@Deployment 
@OverProtocol("Servlet 3.0") 
public static Archive<?> createDeployment() throws IOException { 

    // Build the ear with Maven by hand before run the test! 
    final EnterpriseArchive ear = ShrinkWrap.createFromZipFile(
      EnterpriseArchive.class, new File("../Sin-ear/target/Sin.ear")); 

    final JavaArchive testjar = ShrinkWrap.createFromZipFile(
      JavaArchive.class, new File("./target/test.jar")); 
    //final JavaArchive testjar = ShrinkWrap.create(JavaArchive.class, "test.jar") //other attempt 
    //  .addPackages(true, "com.miles.knowledge.test"); 

    ear.addAsModule(testjar); 
    return ear; 
} 

Et il échoue quand je lance la classe de test test JUnit (je peux voir le déploiement de aplication sans erreur):

java.lang.ClassNotFoundException: com.miles.knowledge.test.GreeterTest from [Module "deployment.Sin.ear.Sin.war:main" from Service Module Loader] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) 
    ... 

Il Il semble que je doive emballer la classe de test dans un paquet de guerre, mais je suis un peu perdu, j'ai besoin d'aide.

Répondre

1

Ce type de déploiement devrait fonctionner (note en ajoutant la classe de test à la guerre) ...

@RunWith(Arquillian.class) 
public class JsfTest extends org.jboss.seam.mock.JUnitSeamTest{ 

    @Deployment(name="UserLoginTest") 
    @OverProtocol("Servlet 3.0") 
    public static Archive<?> createDeployment(){ 

     EnterpriseArchive er = Deployments.webAppDeployment(); 
     WebArchive web = er.getAsType(WebArchive.class, "WebApp-web.war"); 
     er.addAsModule(Testable.archiveToTest(web)); 

     web.addClasses(JsfTest.class) 
      .addAsResource(EmptyAsset.INSTANCE, "seam.properties") 
      .delete("/WEB-INF/web.xml"); 
     web.addAsWebInfResource("mock-web.xml", "web.xml"); 

     return er; 

    } 
} 

public class Deployments { 
    public static EnterpriseArchive webAppDeployment() { 
     return ShrinkWrap.create(ZipImporter.class, "WebApp.ear") 
      .importFrom(new File("../WebApp-ear/target/WebApp.ear")) 
      .as(EnterpriseArchive.class); 
    } 
} 
+0

Ca y est! Merci mec! J'ai pris du temps pour réaliser comment charger la bonne configuration de cacheManager mais votre conseil était correct. –