Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey单元测试:内存容器vs grizzly_Java_Jersey_Jersey 2.0_Jersey Test Framework - Fatal编程技术网

Java Jersey单元测试:内存容器vs grizzly

Java Jersey单元测试:内存容器vs grizzly,java,jersey,jersey-2.0,jersey-test-framework,Java,Jersey,Jersey 2.0,Jersey Test Framework,我正试着在泽西岛进行单元测试 不直接依赖Jersey的类可以使用标准JUnit进行单元测试。这个没问题 但也有Jersey(或者,我应该说JAX-RS?)依赖类。为了测试这些(包括注释的正确性、序列化、状态代码等),Jersey提供了“测试框架”,其中包含baseJerseyTest类 这也是可以理解的 然而,官方文档指定了几种类型的受支持容器,其中可以执行JerseyTest的子类 这些容器似乎可以分为两种类型: 真正的容器 内存容器 从我目前(新手)的角度来看,所有类型1容器都提供相同的功能

我正试着在泽西岛进行单元测试

不直接依赖Jersey的类可以使用标准JUnit进行单元测试。这个没问题

但也有Jersey(或者,我应该说JAX-RS?)依赖类。为了测试这些(包括注释的正确性、序列化、状态代码等),Jersey提供了“测试框架”,其中包含base
JerseyTest

这也是可以理解的

然而,官方文档指定了几种类型的受支持容器,其中可以执行
JerseyTest
的子类

这些容器似乎可以分为两种类型:

  • 真正的容器
  • 内存容器
  • 从我目前(新手)的角度来看,所有类型1容器都提供相同的功能。因此,让我们以灰熊为1型代表

    现在,很明显内存中的容器(根本不是真正的容器)比Grizzly快。因此,我想使用这个容器来测试依赖于Jersey的类。但这句话让我很困惑:

    此容器不支持servlet和其他依赖于容器的容器 功能,但它是简单单元测试的完美选择

    我试图用谷歌搜索内存容器和Grizzly的比较,但并没有找到任何明确的比较。我也读过,但我仍然不清楚内存容器的缺点

    在这方面,我有两个问题:

  • 什么是“servlet和其他依赖于容器的特性”(不需要全面的列表,只需要一般的描述)
  • 若我选择内存容器,那个么我是否会遇到这样一种情况:代码通过了测试,但在生产中失败了(若有必要,我会在生产中使用Tomcat)
  • 谢谢

    什么是“servlet和其他依赖于容器的特性”(不需要全面的列表,只需要一般的描述)

    假设您需要在资源中使用
    HttpServletRequest
    ServletContext
    等。或者,如果您正在使用影响Jersey应用程序的serlvet筛选器或侦听器。这些是servlet特性

    其他“容器特性”只是指您在生产中使用的特定于该容器的任何其他特性。例如,使用Grizzly,可以注入特定于Grizzly的
    请求
    对象

    若我选择内存容器,那个么我是否会遇到这样一种情况:代码通过了测试,但在生产中失败了(若有必要,我会在生产中使用Tomcat)

    主要是如果你使用上面提到的物品


    看一看。这里,有一个Servlet过滤器用于安全性。因此,需要在测试中配置过滤器。而且

    有这样一位在线大师纯粹是一种幸运),但有一件事仍然不是很清楚:我是否可以通过测试并获得失败的代码?我的意思是,如果我将来开始使用这些特性,我的测试会失败(这很好),还是测试会一直通过,但代码在生产中会失败?我想我的问题是,我是否可以将使用内存容器的单元测试视为某种集成测试……我的意思是,一旦您使用了测试框架,无论您使用的是Grizzly还是内存提供程序,它基本上都是一种集成测试。它只取决于您在代码中使用的特性,这些特性决定了您是否可以使用内存中的提供程序。两个提供程序都通过相同的引擎运行应用程序。这只是因为“服务器”提供商需要额外的服务器层,我仍然看不到整体情况,但是,我想,这只是更多实践经验的问题。好的是,交换容器似乎很容易,所以我可以在将来改变主意。谢谢