泽西岛单元测试:内存容器与灰熊
Jersey Unit Test: in memory container vs grizzly
我正在努力了解泽西岛的单元测试。
不直接依赖于 Jersey 的 classes 可以使用标准 JUnit 进行单元测试。这个可以。
但也有 Jersey(或者,我应该说 JAX-RS?)依赖 classes。为了测试这些(包括注释、序列化、状态代码等的正确性)Jersey 提供了包含基础 JerseyTest
class.
的 "test framework"
这个也很好理解
然而,官方文档指定了几种支持的容器类型,其中可以执行 JerseyTest
的子classes。
这些容器似乎可以分为两种类型:
- 真正的容器
- 内存容器
从我目前(新手)的角度来看,所有类型 #1 容器都提供相同的功能。因此,让我们以Grizzly作为第一类代表。
现在,很明显内存容器(根本不是真正的容器)比 Grizzly 更快。因此,我想使用这个容器来测试 Jersey 依赖 classes。但是the official documentation的这个说法让我很困惑:
This containers does not support servlet and other container dependent
features, but it is a perfect choice for simple unit tests.
我试图 google 将内存容器与 Grizzly 进行比较,但没有找到任何明确的比较。我也读过 this highly technical thread,但我仍然不清楚内存容器的缺点。
在这方面,我有两个问题:
- "servlet and other container dependent features" 是什么(不需要全面的列表,只是一般描述)?
- 如果我选择内存容器,我会遇到代码通过测试但在生产中失败的情况吗(如果重要的话,我会在生产中使用Tomcat)?
谢谢
What "servlet and other container dependent features" are (no need for a comprehensive list, but just general description)?
假设您需要在资源中使用 HttpServletRequest
、ServletContext
等。或者,如果您正在使用影响 Jersey 应用程序的 serlvet 过滤器或侦听器。这些是 servlet 功能。
其他 "container features" 仅表示您在生产中使用的容器所特有的任何其他功能。例如,对于 Grizzly,您可以注入特定于 Grizzly 的 Request
对象。
If I choose in-memory container, can I then encounter a situation of code that passes test, but fails in production (I will use Tomcat in production, if that matters)?
主要是如果你使用上面提到的物品。
看到 example of where a servlet environment is required. Here, there was a Servlet Filter being used for security. So the filter needed to be configured in the test. And
我正在努力了解泽西岛的单元测试。
不直接依赖于 Jersey 的 classes 可以使用标准 JUnit 进行单元测试。这个可以。
但也有 Jersey(或者,我应该说 JAX-RS?)依赖 classes。为了测试这些(包括注释、序列化、状态代码等的正确性)Jersey 提供了包含基础 JerseyTest
class.
这个也很好理解
然而,官方文档指定了几种支持的容器类型,其中可以执行 JerseyTest
的子classes。
这些容器似乎可以分为两种类型:
- 真正的容器
- 内存容器
从我目前(新手)的角度来看,所有类型 #1 容器都提供相同的功能。因此,让我们以Grizzly作为第一类代表。
现在,很明显内存容器(根本不是真正的容器)比 Grizzly 更快。因此,我想使用这个容器来测试 Jersey 依赖 classes。但是the official documentation的这个说法让我很困惑:
This containers does not support servlet and other container dependent features, but it is a perfect choice for simple unit tests.
我试图 google 将内存容器与 Grizzly 进行比较,但没有找到任何明确的比较。我也读过 this highly technical thread,但我仍然不清楚内存容器的缺点。
在这方面,我有两个问题:
- "servlet and other container dependent features" 是什么(不需要全面的列表,只是一般描述)?
- 如果我选择内存容器,我会遇到代码通过测试但在生产中失败的情况吗(如果重要的话,我会在生产中使用Tomcat)?
谢谢
What "servlet and other container dependent features" are (no need for a comprehensive list, but just general description)?
假设您需要在资源中使用 HttpServletRequest
、ServletContext
等。或者,如果您正在使用影响 Jersey 应用程序的 serlvet 过滤器或侦听器。这些是 servlet 功能。
其他 "container features" 仅表示您在生产中使用的容器所特有的任何其他功能。例如,对于 Grizzly,您可以注入特定于 Grizzly 的 Request
对象。
If I choose in-memory container, can I then encounter a situation of code that passes test, but fails in production (I will use Tomcat in production, if that matters)?
主要是如果你使用上面提到的物品。
看到 example of where a servlet environment is required. Here, there was a Servlet Filter being used for security. So the filter needed to be configured in the test. And