2016-06-27 124 views
0

我見過很多關於這個主題的信息,但想提供一個具體的例子,並提出一些具體問題。ASP MVC 5集成測試與單元測試與SDK

我目前正處於一個開發項目的中間,在該項目中,我正在通過OEM提供的SDK針對電話系統進行編程。我創建了幾個擴展SDK功能的接口類,並將這些類重構爲支持依賴注入以便於測試。在最底層,我有像「retrieveUserInfo」這樣的接受連接接口和查詢對象的方法。

當單元測試,我可能實際上創建一個連接到電話系統,取回給定的用戶,並檢查它的正確數據。這個測試對我來說很有意義,因爲它讓我知道我的中間件和底層OEM庫都正常工作;但是,因爲它實際上創建了與外部系統的連接,所以對我來說看起來更像是一個集成測試(如果您無法連接到電話系統,則測試將失敗,用戶沒有按預期配置,我有一些錯誤在我的業務邏輯中,或者底層庫存在問題)。

該測試是否應該標記爲集成測試?如果是這樣,我會怎麼去嘗試單元像「retrieveUserInfo」這樣的測試方法?我如何正確分割這兩種類型的測試?

回答

0

定義什麼是「單位」是相當困難的。但是如果你正在測試的是將調用放到實際調用不同系統的外部庫上,那麼你肯定是在集成測試領域。

什麼單位限制爲是有點主觀的,但可能僅限於在一個類的類或公共方法。

如果你想單元測試一個方法調用外部依賴的方法,那麼這是你想要模擬或存根(請參閱Moq爲好的模擬庫)。

+0

所以我可以有一個Visual Studio項目,致力於*單元*測試,我嘲笑的外部依賴性和測試我的業務邏輯,另一個VS項目致力於集成測試,我居然打電話到外部的圖書館...聽起來約對? – slashNburn

+0

你肯定會有一個單獨的單元測試項目,但嘲諷不是一成不變的;一種解決方案可能是爲您的電話系統(ITelephony)提取一個接口,添加一個假實現(MockTelephony),接線 - 全部在代碼中完成;在你的單元測試項目中,你只需切換到使用模擬(它可以返回一些預定義的數據) –

+0

是的,通過這種方式拆分集成和單元測試是很常見的。有些人可能希望你迴避整合測試期。所有測試套件不可避免地導致開銷測試維護,集成測試比單元測試更爲重要。 –