我試圖讓我的頭在澤西島的單元測試。澤西單元測試:內存容器vs灰熊
直接不依賴於Jersey的類可以使用標準JUnit進行單元測試。這個是好的。
但也有澤西島(或者,我應該說JAX-RS?)依賴類。爲了測試這些(包括註釋的正確性,序列化,狀態碼等),Jersey提供了包含基類JerseyTest
類的「測試框架」。
這也很好,可以理解。
然而,官方文檔指定了幾種類型的受支持的容器,其中可以執行JerseyTest
的子類。
好像這些容器可以分爲兩種類型:
- 真正容器
- 在內存中的容器
從我目前(新手)的角度來看,所有類型#1箱提供相同的功能。因此,讓我們以灰熊爲第一代表。
現在很明顯,內存容器(根本不是真正的容器)比灰熊更快。因此,我想使用這個容器來測試Jersey依賴類。但是從the official documentation這種說法混淆了我:
此容器不支持servlet和其他容器依賴 的功能,但它是簡單的單元測試的理想選擇。
我試圖谷歌比較內存容器與灰熊,但沒有找到任何明確的比較。我也讀this highly technical thread,但內存容器的缺點仍然不清楚。
在這方面,我有兩個問題:
- 什麼「servlet和其它容器相關的特徵」是(不需要一個全面的清單,但只是一般的描述)?
- 如果我選擇內存容器,那麼我可以遇到通過測試的代碼情況,但生產失敗(如果有問題,我將在生產環境中使用Tomcat)?
感謝
這是一個純粹的運氣,有這樣的上師在線)) – Vasiliy
但有一點還不是很清楚:我可以通過測試和失敗的代碼?我的意思是,如果我將來會開始使用這些功能,我的測試是否會失敗(這很好),或者測試會繼續傳遞,但是代碼在生產中會失敗?我想我的問題是我是否可以將使用內存容器的單元測試作爲某種類型的集成測試進行處理...... – Vasiliy
我的意思是一旦您使用測試框架,它幾乎是一個集成測試,無論您是使用Grizzly或內存提供者。它僅取決於您在代碼中使用的功能,以確定您是否可以放棄使用內存提供程序。兩個提供程序都通過相同的Jersey引擎運行應用程序。這只是與「服務器」提供商通過一個額外的服務器層 –