2016-06-29 21 views
0

Ich habe eine Naht 2.2.2 Anwendung, die ich auf jboss eap 6 (AS7) migrieren. Da die Tests in dem alten jboss-eingebetteten Container waren, habe ich begonnen, arquillian zu verwenden, aber ich konnte nicht feststellen, dass hot ein Bereitstellungspaket erstellt.Arquillian + Shrinkwrap + Naht: wie zu erstellen Bereitstellungspaket

Dies ist einer meiner Versuche:

@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; 
} 

Und es schlägt fehl, wenn ich die Testklasse als JUnit-Test laufen (ich kann ohne Fehler der Anwendung Einsatz sehen):

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) 
    ... 

Es scheint, dass ich die Testklasse in ein Kriegspaket verpacken muss, aber ich bin irgendwie verloren, ich brauche etwas Hilfe.

Antwort

1

Diese Art der Bereitstellung funktionieren soll (man beachte die Testklasse zum Krieg Zugabe) ...

@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

Das ist es! Danke, Mann! Ich brauchte einige Zeit, um zu erkennen, wie man die richtige CacheManager-Konfiguration lädt, aber der Tipp war richtig. –