我正在使用带有tomee嵌入式容器的Arquillian来测试我的JAX-RS Web服务。在我的测试用例中,我正在运行一个访问提供的资源的泽西测试客户端。但是,在访问资源时,测试始终会导致404 NOT FOUND状态。
在我的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消息。然而,当将存档deplyoing到tomee-jaxrs服务器时,做同样的事情。我需要在这里添加任何额外的maven依赖项或arquillian配置设置才能使其工作吗?
感谢您的任何反馈和最诚挚的问候 帕斯卡
答案 0 :(得分:2)
只需将其包含在您的pom.xml中
即可 <dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>tomee-jaxrs</artifactId>
<version>${tomee.version}</version>
<scope>test</scope>
</dependency>
您可以使用嵌入式TomEE。
答案 1 :(得分:1)
似乎无法将tomee嵌入式适配器切换为加号配置。因此,我切换到了tomee-remote适配器。