繁体   English   中英

泽西单位测试:在内存容器与灰熊

[英]Jersey Unit Test: in memory container vs grizzly

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

不依赖于Jersey的类可以使用标准JUnit进行单元测试。 这个还可以。

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

这也很好,也可以理解。

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

看起来这些容器可以分为两种类型:

  1. 真正的容器
  2. 内存容器

从我目前的(新手)角度来看,所有类型#1容器都提供相同的功能。 因此,让我们把Grizzly作为#1代表。

现在,很明显内存容器(根本不是真正的容器)比Grizzly快。 因此,我想使用这个容器来测试Jersey依赖类。 官方文件中的这一陈述让我感到困惑:

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

我试图谷歌比较内存容器与Grizzly,但没有找到任何明确的比较。 我也读过这个技术性很强的帖子 ,但内存容器的缺点仍然不明确。

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

  1. 什么是“servlet和其他容器依赖功能”(不需要全面的列表,只是一般描述)?
  2. 如果我选择内存容器,那么我是否可以遇到通过测试的代码情况,但是在生产中失败(我会在生产中使用Tomcat,如果这很重要)?

谢谢

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

假设您需要在资源中使用HttpServletRequestServletContext等。 或者,如果您正在使用影响Jersey应用程序的serlvet过滤器或侦听器。 这些是servlet功能。

其他“容器功能”仅表示您在生产中使用的特定于该容器的任何其他功能。 例如,使用Grizzly,您可以注入Grizzly特定的Request对象。

如果我选择内存容器,那么我是否可以遇到通过测试的代码情况,但是在生产中失败(我会在生产中使用Tomcat,如果这很重要)?

主要是如果你使用上面提到的项目。

请参阅需要servlet环境示例 这里有一个Servlet过滤器用于安全性。 因此需要在测试中配置过滤器。 另一个需要HttpServletRequest的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM