2013-07-24 64 views
0

我有一個服務,它作爲兩個其他服務之間的中介。它基本上驗證輸入,然後依次將它們傳遞給這兩個服務(通過嘗試保持事務完整性),然後,如果一切順利,則將結果保存到數據庫。單元測試服務,其作爲兩個其他服務之間的中介

我現在的問題是單獨測試此服務。當然,我可以提供存根來滿足依賴關係。我還可以測試輸入的驗證,是否在正常情況下將適當的數據保存在數據庫中,以及是否存在任何依賴關係拋出異常時是否保留事務完整性。

然而,這只是服務的一半。我的兩難問題是,如果我應該嘗試證明其他兩個依賴項服務是否實際處理了適當的數據?我的服務範圍相當廣泛,所以我想最好也知道依賴服務是否也做得很好。然而,這退出了示波器單元測試,並進入集成測試,對吧?

我有點困惑在這裏。

回答

0

如果你問的是單元測試,那麼做的方法是使用模擬或存根來隔離測試類。如果你覺得僅僅這樣做還不夠,你可以寫一些組件測試,在那裏你使用所有你想測試的真實類,並且使用存根(或內存)數據庫和模擬一些您認爲對您要測試的內容不重要的依賴項。在過去,我測試了以這種方式在它們之間具有高交互的類的小羣集(並且有時會跳過這些類的單元測試,因爲組件測試涵蓋了所有場景)。很顯然,這樣做的問題在於,您測試的課程越多,情景的數量就會呈指數增長。也許你可以測試橋和使用該橋的2個真實類。

0

你應該這樣做。

對於單元測試,絕對使用模擬對象進行依賴關係,最好使用像EasyMock這樣的工具。作爲旁註,如果您覺得您的中介服務的功能對於單元測試來說過於寬泛,您可能需要考慮將其分解爲更小的部分。

當然,您還應該使用真正的依賴關係進行集成測試,以確保您的服務按照預期一起工作。