2013-06-28 2 views
1

JAX-RS 웹 서비스를 테스트하기 위해 Arquillian을 tomee-embedded 컨테이너와 함께 사용하고 있습니다. 테스트 케이스에서는 제공되는 리소스에 액세스하는 저지 테스트 클라이언트를 실행하고 있습니다. 그러나 자원에 액세스 할 때 항상 404 NOT FOUND 상태가됩니다.Arquillian, tomee-embedded 및 JAX-RS

동일한 tomee-jaxrs 인스턴스에 동일한 프로젝트를 배치 할 때 자원이 올바르게 제공됩니다.

@RunWith(Arquillian.class) 
public class DemoTest { 
    @Deployment 
    public static WebArchive createDeployment() throws Exception { 
     return ShrinkWrap.create(WebArchive.class).addPackage(Controller.class.getPackage()).setWebXML("ch/codenation/test/regression/resources/container/WEB-INF/web.xml"); 
    } 

    @ArquillianResource 
    private URL url; 

    @Test 
    public void testGetData() throws Exception { 
     final IApplicationLayer applicationLayer = new JaxRsApplicationLayer(url.toURI()); 
     final Callable<String> dataProvider = new DataProvider(applicationLayer); 
     Assert.assertEquals("asdf", dateProvider.call()); 
    } 
} 

을뿐만 아니라 내 web.xml을 같이 다음과 같이

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>${jersey.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.openejb</groupId> 
    <artifactId>arquillian-tomee-embedded</artifactId> 
    <version>${tomee.version}</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.jboss.arquillian.junit</groupId> 
    <artifactId>arquillian-junit-container</artifactId> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.jboss.shrinkwrap.resolver</groupId> 
    <artifactId>shrinkwrap-resolver-depchain</artifactId> 
    <scope>test</scope> 
    <type>pom</type> 
</dependency> 

내 테스트 케이스의 모양 :

이 내가 내 테스트 프로젝트에 포함 된 한 받는다는 종속성은

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <display-name>codenation-service</display-name> 
    <servlet> 
     <servlet-name>javax.ws.rs.core.Application</servlet-name> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>javax.ws.rs.core.Application</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

JAX-RS 리소스는 실제로 테스트 메서드에 중단 점을 넣고 액세스하려고 할 때 사용할 수 없습니다 브라우저의 리소스에서 404 메시지가 수신됩니다. 그러나 tomee-jaxrs 서버로 아카이브를 deplyoing 할 때 똑같은 일을하는 것이 좋습니다. 이 작업을 수행하기 위해 여기에 추가해야하는 추가 maven 종속성 또는 arquillian 구성 설정이 있습니까?

피드백에 대한 감사와 안부 파스칼은

답변

1

플러스 구성에 tomee 내장 어댑터를 전환 할 수있는 방법은없는 것 같다. 그래서 나는 tomee-remote 어댑터로 전환했다.

2

은 당신의 pom.xml

<dependency> 
     <groupId>org.apache.openejb</groupId> 
     <artifactId>tomee-jaxrs</artifactId> 
     <version>${tomee.version}</version> 
     <scope>test</scope> 
    </dependency> 

이 포함 당신은 임베디드 TomEE 작업 할 수 있습니다.