2016-04-15 3 views
0

Я пытаюсь добавить Mockito моих arquillian тестов (с усадочной), например, так:Arquillian EJB добавления 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; 
    } 

Я использую Mockito перезаписать с @Alternative. Но когда я добавить строку archive = archive.merge(lib) я получаю исключение:

Вызванный: java.lang.ClassNotFoundException: org.apache.tools.ant.Task

Или получите

Вызванный: java.lang.ClassNotFoundException: org.mockito.asm.signature.SignatureVisitor

Неужели кто-то еще испытал это?

UPDATE: Некоторые дополнительная информация, я пытаюсь проверить это с помощью встроенного контейнера wildfly: 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> 

ответ

0

Я, наконец, нашел решение, которое мне было необходимо. Я нашел решение, включив муравьиную зависимость. Проблемы начались, когда мне нужно было использовать другие тестовые библиотеки, такие как огурец. Я теперь тестирование с развертыванием EAR, который разрешил мои проблемы:

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

и моей 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

Вы не можете использовать Mockito с статике или финала.

Для этого вам необходимо использовать PowerMock.

+0

Проблема заключается в том, что я использую это с wildfly встраиваемыми. Поэтому мне нужно включить эти классы в мое '@ Deployment', но я все равно получаю ошибку. –

Смежные вопросы