我有一个用Jersey库实现的JAX-RS服务,现在我想测试它。为了做到这一点,我想在我的测试中托管这个服务,方法是用模拟服务预初始化它。
托管此类服务并执行测试调用的最佳方式是什么?
@Path("/srv")
public class MyService
{
@GET
public void action(@Context UriInfo uri)
{ ... }
}
@Test
public void myTest()
{
MyService service = new MyService();
service.setSomething(...);
// How do I host it?
// How do I call it?
}发布于 2009-08-27 06:39:11
新的(修订的) Jersey测试框架是Jersey 1.1.2-ea版本的一部分,现在支持进程内或内存中的测试。为了在内存中运行您的测试,您需要做的就是将属性test.containerFactory设置为com.sun.jersey.test.framework.spi.container.inmemory.InMemoryTestContainerFactory,,即按如下方式运行您的测试:
mvn clean test -Dtest.containerFactory=com.sun.jersey.test.framework.spi.container.inmemory.InMemoryTestContainerFactory -DenableLogging
有关更多详细信息,请在http://blogs.oracle.com/naresh上查看标题为Jersey测试框架重新访问!的博客条目。
发布于 2009-06-09 07:02:52
我相信Jersey Test Framework为您的需求提供了一个解决方案。它允许您部署单个服务,并运行其所有测试。您可以使用该框架对Grizzly Web Container、嵌入式GlassFish和/或HTTPServer运行测试。
请注意,您也可以使用该框架在常规web容器(如GlassFish和Tomcat )上运行测试。如果您还有任何疑问,请随时发送给我或泽西用户的邮件列表- users@jersey.dev.java.net一封电子邮件。
发布于 2009-05-28 17:10:50
我还没有尝试过,但是像HtmlUnit或HttpUnit这样的JUnit扩展可能是测试JAX-RS/Jersey服务的好方法。测试用例可以使用XPaths查找预期的返回值,并根据预期的返回值验证返回值。有关详细信息,请参阅:http://htmlunit.sourceforge.net/gettingStarted.html。
https://stackoverflow.com/questions/911813
复制相似问题