[英]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服務模板連接到此模擬服務器,發送請求消息,模擬服務器然后根據注冊的期望進行驗證。 如果滿足期望,則模擬服務器然后准備響應消息,該消息被發送回模板。
測試客戶端代碼的典型方案包括:
- 創建MockWebServiceServer。
- 設置有關請求消息的期望。
- 創建適當的響應消息
- 正常使用WebServiceTemplate,直接通過客戶端代碼。
- 調用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.