簡體   English   中英

我應該如何對WebServiceTemplate進行單元測試(SpringWS)

[英]How Should I Unit Test WebServiceTemplate (SpringWS)

我正在試圖找出為Spring的WebService Template類編寫單元測試的最佳方法。 我要做的是檢查以確保我為我的客戶端生成的每個請求/響應類型正確連接這些類。 我還想確保如果返回異常,則正確處理異常。

我想我想要做的是找出一種方法來進行實際的發送/接收呼叫。

有什么建議么?

嚴格地說,單元測試根本不應該使用WebServiceTemplate 您的代碼應該與WebServiceOperations接口進行通信,並且應該使用例如模擬對象進行單元測試。 這不會進行網絡調用,只會測試你編寫的java。

您所描述的更好地稱為集成測試,您可以測試您的接線是否正確完成,可能包括對真實Web服務的調用。

在這種情況下,集成測試補充了單元測試。 我的建議 - 寫兩個。

我會發粘並回答我自己的問題。

經過一番深入研究后,我發現Spring WS 2.0有一個新的客戶端測試框架,它完全符合我的希望(來自http://blog.springsource.com/2011/01/11/spring-web-services- 2-0發布/ ):

進行客戶端集成測試的核心類是MockWebServiceServer。 基本思想是Web服務模板連接到此模擬服務器,發送請求消息,模擬服務器然后根據注冊的期望進行驗證。 如果滿足期望,則模擬服務器然后准備響應消息,該消息被發送回模板。

測試客戶端代碼的典型方案包括:

  1. 創建MockWebServiceServer。
  2. 設置有關請求消息的期望。
  3. 創建適當的響應消息
  4. 正常使用WebServiceTemplate,直接通過客戶端代碼。
  5. 調用MockWebServiceServer.verify()以確保滿足所有期望。

現在不幸的是我的項目仍然使用spring-ws 1.5.9。 我將嘗試將客戶端升級到2.0並查看是否有任何中斷。 如果情況順利,我可能會盡快嘗試切換服務器端。

您所描述的內容不再是“單元測試”,因為您測試的不僅僅是您的類中單獨使用WebServiceTemplate的單元。 對此類進行良好的單元測試可能涉及模擬WebServiceTemplate類,以便您可以在WST返回不同類型的響應,異常等時測試類的行為方式。

對於使用有線協作器(以及Spring上下文)驗證類在運行時的行為的測試,您應該查看Spring的TestContext Framework 這允許您使用諸如@ContextConfiguration({"path/to/spring/xml"})類的東西來注釋您的測試類,以使Spring在運行測試之前實例化ApplicationContext,並將任何@Autowired屬性注入您的測試類。

最后要注意的是:針對實時Web服務測試您的Web服務使用類通常是一種不好的做法,因為這會引入外部依賴於您的測試 - 服務是否正常運行? 它是什么服務器? 它的版本是什么? 您可能不希望將這些測試作為正常單元測試套件的一部分運行。

soapUI是測試暴露的WS的好選擇。 您可以手工制作臨時測試請求或以各種方式自動執行預定義測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM