Java Jersey单元测试:内存容器vs grizzly
我正试着在泽西岛进行单元测试 不直接依赖Jersey的类可以使用标准JUnit进行单元测试。这个没问题 但也有Jersey(或者,我应该说JAX-RS?)依赖类。为了测试这些(包括注释的正确性、序列化、状态代码等),Jersey提供了“测试框架”,其中包含baseJava 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容器都提供相同的功能
JerseyTest
类
这也是可以理解的
然而,官方文档指定了几种类型的受支持容器,其中可以执行JerseyTest
的子类
这些容器似乎可以分为两种类型:
HttpServletRequest
,ServletContext
等。或者,如果您正在使用影响Jersey应用程序的serlvet筛选器或侦听器。这些是servlet特性
其他“容器特性”只是指您在生产中使用的特定于该容器的任何其他特性。例如,使用Grizzly,可以注入特定于Grizzly的请求
对象
若我选择内存容器,那个么我是否会遇到这样一种情况:代码通过了测试,但在生产中失败了(若有必要,我会在生产中使用Tomcat)
主要是如果你使用上面提到的物品
看一看。这里,有一个Servlet过滤器用于安全性。因此,需要在测试中配置过滤器。而且有这样一位在线大师纯粹是一种幸运),但有一件事仍然不是很清楚:我是否可以通过测试并获得失败的代码?我的意思是,如果我将来开始使用这些特性,我的测试会失败(这很好),还是测试会一直通过,但代码在生产中会失败?我想我的问题是,我是否可以将使用内存容器的单元测试视为某种集成测试……我的意思是,一旦您使用了测试框架,无论您使用的是Grizzly还是内存提供程序,它基本上都是一种集成测试。它只取决于您在代码中使用的特性,这些特性决定了您是否可以使用内存中的提供程序。两个提供程序都通过相同的引擎运行应用程序。这只是因为“服务器”提供商需要额外的服务器层,我仍然看不到整体情况,但是,我想,这只是更多实践经验的问题。好的是,交换容器似乎很容易,所以我可以在将来改变主意。谢谢