2016-02-22 3 views
0

Я сконфигурировал свой проект и написал свой тестовый класс для многомодульного проекта. Тест для вызова бизнес-службы на сервер AS400 написан с помощью Arquillan, который дает мне InvalidEnvironnmentException, когда я запускаю тест.Arquillan InvalidEnvironnmentException предлагает добавить уже добавленный плагин к Maven pom.xml

package com.my.company.theproject.business.service.protect; 

import static org.junit.Assert.*; 

import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.List; 

import javax.inject.Inject; 

import org.jboss.arquillian.container.test.api.Deployment; 
import org.jboss.arquillian.junit.Arquillian; 
import org.jboss.shrinkwrap.api.ArchivePaths; 
import org.jboss.shrinkwrap.api.ShrinkWrap; 
import org.jboss.shrinkwrap.api.spec.WebArchive; 
import org.jboss.shrinkwrap.resolver.api.maven.Maven; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 

import com.my.company.theproject.common.dataaccess.PojoService; 
import com.my.company.theproject.ServiceContext; 

@RunWith(Arquillian.class) 
public class SampleServiceTest 
{ 

    @Inject 
    @PojoService 
    SampleService service; 

    private ServiceContext context; 

    @Before 
    public void setUp() 
     throws Exception 
    { 

     context = new ServiceContext(); 
    } 

    @Deployment 
    public static WebArchive createDeployment() 
    { 
     return ShrinkWrap 
      .create(WebArchive.class) 
      .addClasses(SampleService.class) 
      .addAsWebInfResource("META-INF/beans.xml", ArchivePaths.create("beans.xml")) 
      .addAsLibraries(
       Maven.configureResolverViaPlugin().importRuntimeDependencies().resolve().withTransitivity().asFile()); 
    } 

    @Test 
    public void test() 
    { 

     List<String> list = new ArrayList<String>(); 
     list.add("AAA"); 

     service.getStoredProcedureParameters(context, list); 

     fail("To be implemented"); 
    } 
} 

Я записал импорта здесь, в случае, если некоторые из них были неправильно (например, javax.inject.Inject?).

Проблема здесь состоит в том, что Arquillian дает мне эту ошибку в тестовом режиме исполнения (первое исключение трассировки стека):

java.lang.RuntimeException: Не удалось вызвать метод развертывания: общественный статический org.jboss .shrinkwrap.api.spec.WebArchive com.sopra.banking.packbanque.business.service.protect.SampleServiceTest.createDeployment()

в конце трассировки стека, я вижу это:

Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.jboss.arquillian.container.test.impl.client.deployment.AnnotationDeploymentScenarioGenerator.invoke(AnnotationDeploymentScenarioGenerator.java:177) 
    ... 50 more 
Caused by: org.jboss.shrinkwrap.resolver.api.maven.InvalidEnvironmentException: Configuration from environment requires that user has following properties set, however they were not detected in runtime environment: 
    maven.execution.pom-file 
    maven.execution.offline 
    maven.execution.user-settings 
    maven.execution.global-settings 
    maven.execution.active-profiles 

You should enable ShrinkWrap Maven Resolver Plugin to get them set for you automatically if executing from Maven via adding following to your <build> section: 

<plugin> 
    <groupId>org.jboss.shrinkwrap.resolver</groupId> 
    <artifactId>shrinkwrap-resolver-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <goals> 
       <goal>propagate-execution-context</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

    at org.jboss.shrinkwrap.resolver.impl.maven.task.ConfigureSettingsFromPluginTask.execute(ConfigureSettingsFromPluginTask.java:71) 
    at org.jboss.shrinkwrap.resolver.impl.maven.ConfigurableMavenResolverSystemBaseImpl.configureViaPlugin(ConfigurableMavenResolverSystemBaseImpl.java:119) 
    at org.jboss.shrinkwrap.resolver.api.maven.Maven.configureResolverViaPlugin(Maven.java:77) 
    at org.jboss.shrinkwrap.resolver.api.maven.Maven.configureResolverViaPlugin(Maven.java:59) 
    at com.sopra.banking.packbanque.business.service.protect.SampleServiceTest.createDeployment(SampleServiceTest.java:74) 
    ... 55 more 

Проблема в том, что это объявление плагина уже находится в моем Maven pom.xml!

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.jboss.shrinkwrap.resolver</groupId> 
      <artifactId>shrinkwrap-resolver-maven-plugin</artifactId> 
      <version>2.2.0-beta-2</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>propagate-execution-context</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

В чем проблема?

ответ

0

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

Я не уверен, но вы можете попробовать это ... :)

Вы можете найти все о shrikwrap распознаватель здесь:

https://github.com/shrinkwrap/resolver