我爲了使用的Arquillian與tomee嵌入容器來測試我的JAX-RS Web服務JAX-RS。在我的測試案例中,我運行了一個澤西測試客戶端訪問提供的資源。但是,訪問資源時,測試總是導致404 NOT FOUND狀態。的Arquillian,tomee嵌入式和
當部署在我tomee-JAXRS例如在同一個項目中,資源被正確提供。
這些是我已經包括在我的測試項目的Maven依賴:
<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>
我的測試情況如下所示:
@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:
<?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服務器時執行同樣的操作可以正常工作。爲了完成這項工作,是否還需要添加其他的Maven依賴項或Arquillian配置設置?
感謝您的任何意見和問候 帕斯卡爾