Почему arquillian дает мне это: Не удалось прочитать активную конфигурацию контейнера?

Я пытаюсь интегрировать решение arquillian в свой проект Maven EJB, который содержит только EJB, которые я использую в других отдельных проектах.

Я использую JBoss EAP6.

Итак, я сделал это следующим образом:

Я поместил arquillian.xml в ejbModule/src/test/resources/:

<container qualifier="jboss" default="true">
    <configuration>
        <property name="jbossHome">D:\jbdevstudio\jboss-eap-6.2</property>
    </configuration>
</container> 

в pom моего проекта я добавил следующие зависимости:

<dependency>
   <groupId>org.jboss.arquillian.container</groupId>
    <artifactId>arquillian-jbossas-embedded-6</artifactId>
   <version>1.0.0.Alpha5</version>
</dependency>

<dependency>
   <groupId>org.jboss.arquillian</groupId>
   <artifactId>arquillian-junit</artifactId>
   <version>1.0.0.Alpha5</version>
</dependency>

<dependency>
   <groupId>org.jboss.arquillian.junit</groupId>
   <artifactId>arquillian-junit-container</artifactId>
   <scope>test</scope>
</dependency>

<dependency>
   <groupId>org.jboss.arquillian.protocol</groupId>
   <artifactId>arquillian-protocol-servlet</artifactId>
  <scope>test</scope>
</dependency> 

<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.8.2</version>
</dependency> 
<profiles>
   <profile>
        <id>jbossas-embedded-6</id>
        <activation>
        <activeByDefault>true</activeByDefault>
        </activation>
   </profile>

   <profile>
        <id>arq-jbossas-managed</id>
             <dependencies>
                  <dependency>
                       <groupId>org.jboss.as</groupId>
                       <artifactId>jboss-as-arquillian-containermanaged</artifactId>
                       <scope>test</scope>
                  </dependency>
             </dependencies>
   </profile>

   <profile>
        <id>arq-jbossas-remote</id>
        <dependencies>
             <dependency>
                  <groupId>org.jboss.as</groupId>
                  <artifactId>jboss-as-arquillian-containerremote</artifactId>
                  <scope>test</scope>
             </dependency>
        </dependencies>
   </profile>
</profiles>

Тестовый класс:

import javax.inject.Inject;
import org.jboss.arquillian.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.oap.subscription.AbstractSubscription;

@RunWith(Arquillian.class)
    public class SubscriptionFactoryTest {   

    @Inject
    private SubscriptionFactory subscriptionFactory;

    @Deployment
    public static JavaArchive getDeployement() {
        System.out.println("### testSayHelloEJB");
        return ShrinkWrap.create(JavaArchive.class, "subscriptionFactory.jar")
            .addClasses(AbstractSubscription.class,SubscriptionFactory.class);

    }



    @Test
    public void getSubscriptionByIdTest() {
        System.out.println("### testSayHelloEJB");
    }
}

EJB-класс:

@Remote(ISubscriptionFactoryRemote.class)
@Local(ISubscriptionFactoryLocal.class)
@Stateless
public class SubscriptionFactory extends AbstractSubscription implements ISubscriptionFactoryRemote {

    @Override
    public AbstractSubscription getSubscriptionById(final Integer id) {

        AbstractSubscription ret = null;
        if (id != null) {
            // create query
            final StringBuilder queryString = new StringBuilder("select c from AbstractSubscription c ");           

            try {
                queryString.append("where c.id = :id");

                // create query
                Query query = this.getEntityManager().createQuery(queryString.toString());

                // set parameter
                query = query.setParameter("id", id);

                // recovers refCountry
                ret = (AbstractSubscription) query.getSingleResult();

            } catch (final Exception exc) {

            }

        }

        return ret;

    }
}

Когда я запускаю тест класса как тест Junit, он дает мне ошибки:

 janv. 20, 2015 12:15:34 PM org.jboss.arquillian.impl.client.container.ContainerRegistryCreator getActivatedConfiguration
 Infos: Could not read active container configuration: null 

След Неудачи:

 java.lang.NoClassDefFoundError: Lorg/jboss/embedded/api/server/JBossASEmbeddedServer;
 at java.lang.Class.getDeclaredFields0(Native Method)
 at java.lang.Class.privateGetDeclaredFields(Class.java:2397)
 at java.lang.Class.getDeclaredFields(Class.java:1806)
 at org.jboss.arquillian.impl.core.Reflections.getFieldInjectionPoints(Reflections.java:74)
 ... 79 more

Есть идеи.


person TinyOS    schedule 20.01.2015    source источник


Ответы (1)


Вы используете очень старую версию Arquillian, я бы использовал по крайней мере версию 1.1.0.Final. Я также не думаю, что вам нужны некоторые из определенных вами зависимостей Arquillian.

Удалите зависимости arquillian-jbossas-embedded-6 и arquillian-junit.

Существует множество примеров quickstart использования Arquillian с JBoss EAP. Взгляните на некоторые из помпонов, возможно, это поможет.

person James R. Perkins    schedule 21.01.2015