2016-06-14 27 views
1

Ich versuche, einen sehr einfachen REST Web-Service zu testen:@ArquillianResource null zurück URL

  • eine jboss-web.xml Datei
  • eine Application Klasse:

    @ApplicationPath("/") 
    public class Application extends javax.ws.rs.core.Application {} 
    
  • eine Resource Klasse:

    @Path("/") 
    public class Resource { 
        @GET String get() { return "OK"; } 
    } 
    

Meine Test-Klasse verwendet die @ArquillianResource Anmerkung:

public class ResourceTest extends Arquillian { 

    @ArquillianResource URL baseURL; 

    @Deployment 
    public static WebArchive create() { 
    return ShrinkWrap.create(WebArchive.class) 
        .addClasses(Resource.class, Application.class); 
    } 

    @Test public void get() { /* test Resource here */ } 
} 

Ich habe versucht, mit @Deployment(testable = false), @Deployment(Testable = true), habe ich versucht, auch @RunAsClient Anmerkung zu dem Testverfahren hinzuzufügen.

Aber ich bekomme immer die gleiche Ausnahme:

java.lang.RuntimeException: Could not lookup value for field java.net.URL com.assylias.test.arquillian.ResourceTest.baseURL 

at org.jboss.arquillian.test.impl.enricher.resource.ArquillianResourceTestEnricher.enrich(ArquillianResourceTestEnricher.java:71) 
at org.jboss.arquillian.test.impl.TestInstanceEnricher.enrich(TestInstanceEnricher.java:55) 
at org.jboss.arquillian.container.test.impl.ClientTestInstanceEnricher.enrich(ClientTestInstanceEnricher.java:51) 

[...] 

Caused by: java.lang.RuntimeException: Provider for type class java.net.URL returned a null value: org.jboss.arqui[email protected]babafc2 
at org.jboss.arquillian.test.impl.enricher.resource.ArquillianResourceTestEnricher.lookup(ArquillianResourceTestEnricher.java:133) 
at org.jboss.arquillian.test.impl.enricher.resource.ArquillianResourceTestEnricher.enrich(ArquillianResourceTestEnricher.java:67) 

Als Referenz pom.xml:

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>org.jboss.arquillian</groupId> 
     <artifactId>arquillian-bom</artifactId> 
     <version>1.1.11.Final</version> 
     <scope>import</scope> 
     <type>pom</type> 
    </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-api</artifactId> 
    <version>7.0</version> 
    <scope>provided</scope> 
    </dependency> 

    <dependency> 
    <groupId>org.jboss.arquillian.container</groupId> 
    <artifactId>arquillian-weld-ee-embedded-1.1</artifactId> 
    <version>1.0.0.CR9</version> 
    <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.jboss.arquillian.testng</groupId> 
    <artifactId>arquillian-testng-container</artifactId> 
    <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.jboss.weld</groupId> 
    <artifactId>weld-core</artifactId> 
    <version>2.2.16.Final</version> 
    <scope>test</scope> 
    </dependency> 

    <dependency> 
    <groupId>org.testng</groupId> 
    <artifactId>testng</artifactId> 
    <scope>test</scope> 
    </dependency> 
</dependencies> 
+0

Könnte es sein, dass ich einen eingebetteten Container anstelle eines Remote-Containers verwende? – assylias

Antwort

0

Das gleiche funktioniert mit:

<dependency> 
    <groupId>org.wildfly.arquillian</groupId> 
    <artifactId>wildfly-arquillian-container-remote</artifactId> 
    <version>2.0.0.Final</version> 
    <scope>test</scope> 
</dependency> 

und Es scheint, dass das Problem darin besteht, dass das eingebettete Profil d Dieses Feature wird nicht unterstützt.