2016-04-15 15 views
0

Ich versuche Mockito meiner Arquillian Tests (mit ShrinkWrap) hinzufügen, etwa so:Arquillian EJB Hinzufügen Mockito

@Deployment 
    public static Archive<?> createDeployment() { 
     JavaArchive archive = ShrinkWrap.create(JavaArchive.class, "test.jar") 
       .addPackage(BeanClass.class.getPackage()) 
       .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") 
       ; 

     Archive[] libs = Maven.resolver() 
       .loadPomFromFile("pom.xml") 
       .resolve(
         "org.mockito:mockito-all" 
       ) 
       .withTransitivity() 
       .as(JavaArchive.class); 

     for (Archive lib : libs) { 
      archive = archive.merge(lib); 
     } 

     return archive; 
    } 

ich Mockito bin mit mit @Alternative zu überschreiben. Aber wenn ich die Zeile archive = archive.merge(lib) Ich erhalte die Ausnahme:

Verursacht durch: java.lang.ClassNotFoundException: org.apache.tools.ant.Task

Oder ich bekommen

verursacht durch: java.lang.ClassNotFoundException: org.mockito.asm.signature.SignatureVisitor

Hat das noch jemand anderes erlebt?

UPDATE: Einige zusätzliche Informationen, ich versuche, dies mit einem Wildfly eingebetteten Behälter zu testen: pom.xml

<dependencies> 
       <dependency> 
        <groupId>org.wildfly</groupId> 
        <artifactId>wildfly-arquillian-container-embedded</artifactId> 
        <scope>test</scope> 
       </dependency> 

       <dependency> 
        <groupId>org.wildfly</groupId> 
        <artifactId>wildfly-embedded</artifactId> 
        <scope>test</scope> 
       </dependency> 

       <dependency> 
        <groupId>org.jboss.arquillian.extension</groupId> 
        <artifactId>arquillian-transaction-jta</artifactId> 
        <scope>test</scope> 
       </dependency> 
      </dependencies> 

Antwort

0

Ich habe endlich die Lösung gefunden, die ich benötigt habe. Ich habe eine Lösung gefunden, indem ich Ameisenabhängigkeit eingeschlossen habe. Die Probleme begannen, als ich andere Testbibliotheken wie Gurke benutzen musste. Ich teste jetzt mit einer EAR-Bereitstellung, die meine Probleme gelöst hat:

@Deployment 
    public static Archive<?> createDeployment() { 
     final JavaArchive ejbJar = ShrinkWrap 
       .create(JavaArchive.class, "ejb-jar.jar") 
       .addClass(NewSessionBean.class) 
       .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); 

     final WebArchive testWar = ShrinkWrap.create(WebArchive.class, "test.war") 
       .addClass(NewSessionBeanTest.class) 
       .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml") 

       ; 

     Archive[] libsArchives = Maven.resolver() 
       .loadPomFromFile("pom.xml") 
       .resolve("org.mockito:mockito-all") 
       .withTransitivity() 
       .as(JavaArchive.class); 

     testWar.addAsLibraries(libsArchives); 
     final EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class) 
       .setApplicationXML("META-INF/test-application.xml") 
       .addAsModule(ejbJar) 
       .addAsModule(testWar); 

     return ear; 
    } 

Und mein test-application.xml

<application> 
    <display-name>ear</display-name> 
    <module> 
     <ejb>ejb-jar.jar</ejb> 
    </module> 
    <module> 
     <web> 
      <web-uri>test.war</web-uri> 
      <context-root>/test</context-root> 
     </web> 
    </module> 
</application> 
0

Sie können Mockito nicht mit Statik oder Finale verwenden.

Sie müssen dazu PowerMock verwenden.

+0

Das Problem ist, dass ich diese verwenden, um mit Wildfly-eingebettet. Also muss ich diese Klassen in meine '@ Deployment' einbinden, aber ich bekomme den Fehler immer wieder. –