Как выбрать контейнер от qualifyer от arquillian.xml?

Я хочу иметь различные конфигурации контейнеров в моем arquillian.xml и выбирать их в своем тесте. Но я не могу загрузить какой-либо контейнер, но по умолчанию.

<!--?xml version="1.0" encoding="UTF-8" standalone="yes"?-->
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jboss.org/schema/arquillian" xsi:schemalocation="http://jboss.org/schema/arquillian http://www.jboss.org/schema/arquillian/arquillian_1_0.xsd">
 <container qualifier="weld" default="false">
 </container>
</arquillian>

Тестовый пример:

@Deployment(name="depl1")
@TargetsContainer("weld")
public static JavaArchive createTestArchive() throws UnsupportedEncodingException {
 return ShrinkWrap
 .create(JavaArchive.class, "test.jar")
 .addClasses(SomeOtherCdiService.class)
 .addAsManifestResource(new ByteArrayAsset(beansXmlContent.getBytes("utf-8")), ArchivePaths.create("beans.xml"));
}
@Test
@OperateOnDeployment("depl1")
public void shouldBeAbleToInjectInject() {
 assertNotNull(someOtherCdiService);
}

Но тесты не запускаются, поскольку Arquilian не находит контейнер

org.jboss.arquillian.container.test.impl.client.deployment.ValidationException: DeploymentScenario содержит цели, не соответствующие определенному контейнеру в реестре. сварной шов. Возможные причины: Нет развертываемого контейнера найденные в Classpath, или вы определили @org.jboss.arquillian.container.test.api. @org.jboss.arquillian.container.test.api.TargetsContainer значение, которое не соответствует найденным/сконфигурированным контейнерам (см. arquillian.xml контейнер @отборочный)

Я посмотрел на источник и обнаружил, что Аквилан только обнаружил контейнер _DEFAULT_.

Тестирование работает, когда я удаляю @TargetsContainer("weld") из метода развертывания. Поэтому я думаю, что общий тест в порядке.

Тесты также работают, если я изменяю конфигурацию контейнера на default="true" (), тогда тесты работают, поэтому я думаю, что файл конфигурации загружен.

У кого-то есть идея, что происходит не так?

Подробнее

Полная стопка:

org.jboss.arquillian.container.test.impl.client.deployment.ValidationException:
DeploymentScenario contains targets not matching any defined Container in the registry. weld.
Possible causes are: No Deployable Container found on Classpath or your have defined a
@org.jboss.arquillian.container.test.api.Deployment with a
@org.jboss.arquillian.container.test.api.TargetsContainer value that does not match any found/configured Containers
(see arquillian.xml container@qualifier) 
at org.jboss.arquillian.container.test.impl.client.deployment.DeploymentGenerator.validate(DeploymentGenerator.java:102)
at org.jboss.arquillian.container.test.impl.client.deployment.DeploymentGenerator.generateDeployment(DeploymentGenerator.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114)
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
at org.jboss.arquillian.container.test.impl.client.ContainerEventController.execute(ContainerEventController.java:100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114)
at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:80)
at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:179)
at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:311)
at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46)
at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:196)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:144)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Зависимости POM.XML

<dependency>
 <groupid>javax.enterprise</groupid>
 <artifactid>cdi-api</artifactid>
 <version>1.0-SP4</version>
 <scope>provided</scope>
 </dependency>
 <dependency>
 <groupid>javax.annotation</groupid>
 <artifactid>jsr250-api</artifactid>
 <scope>provided</scope>
 <version>1.0</version>
 </dependency>
 <dependency>
 <groupid>javax.validation</groupid>
 <artifactid>validation-api</artifactid>
 <scope>provided</scope>
 <version>1.0.0.GA</version>
 </dependency>
 <dependency>
 <groupid>org.hibernate</groupid>
 <artifactid>hibernate-validator</artifactid>
 <version>4.0.0.GA</version>
 <scope>provided</scope>
 <exclusions>
 <exclusion>
 <artifactid>slf4j-api</artifactid>
 <groupid>org.slf4j</groupid>
 </exclusion>
 </exclusions>
 </dependency>
 <dependency>
 <groupid>javax.faces</groupid>
 <artifactid>jsf-api</artifactid>
 <version>2.0</version>
 <scope>provided</scope>
 </dependency>
 <!-- ejb -->
 <dependency>
 <groupid>javax.ejb</groupid>
 <artifactid>ejb-api</artifactid>
 <version>3.0</version>
 <scope>provided</scope>
 </dependency>
 <!-- Test -->
 <dependency>
 <groupid>junit</groupid>
 <artifactid>junit</artifactid>
 <version>4.10</version>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupid>org.hamcrest</groupid>
 <artifactid>hamcrest-core</artifactid>
 <version>${hamcrest.version}</version>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupid>org.hamcrest</groupid>
 <artifactid>hamcrest-library</artifactid>
 <version>${hamcrest.version}</version>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupid>org.jboss.arquillian.junit</groupid>
 <artifactid>arquillian-junit-container</artifactid>
 <version>1.0.0.CR6</version>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupid>org.jboss.arquillian.container</groupid>
 <artifactid>arquillian-weld-se-embedded-1.1</artifactid>
 <version>1.0.0.CR3</version>
 <!-- works with arquillian core 1.0.0.CR6 -->
 <scope>test</scope>
 </dependency>
 <!-- do not use org.jboss.weld.se:weld-se because is contains the CODE
 of slf4j in an not compatible version so we need the parts of weld-se seperate:
 weld-se-core, weld-core, org.javassist, slf4j-jdk14 https://issues.jboss.org/browse/WELD-903 -->
 <dependency>
 <groupid>org.jboss.weld.se</groupid>
 <artifactid>weld-se-core</artifactid>
 <version>1.1.5.Final</version>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupid>org.jboss.weld</groupid>
 <artifactid>weld-core</artifactid>
 <version>1.1.5.Final</version>
 <exclusions>
 <exclusion>
 <artifactid>slf4j-api</artifactid>
 <groupid>org.slf4j</groupid>
 </exclusion>
 </exclusions>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupid>org.javassist</groupid>
 <artifactid>javassist</artifactid>
 <version>3.14.0-GA</version>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupid>org.slf4j</groupid>
 <artifactid>slf4j-jdk14</artifactid>
 <version>1.6.1</version>
 <scope>test</scope>
 </dependency>
2 ответа

Если вы установили системное свойство arquillian.launch из maven с помощью конфигурации surefire в контейнер, который вы хотите запустить, который будет работать. Вы можете увидеть, что мы сделали в Solder, https://github.com/seam/solder/blob/develop/testsuite/pom.xml


Вы видите свое запрошенное решение здесь: https://docs.jboss.org/author/display/ARQ/Container+config+runtime+selection Свяжите свой профиль maven с свойством arquillian-launch, чтобы выбрать контейнер из arquillian.xml

licensed under cc by-sa 3.0 with attribution.