簡體   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