簡體   English   中英

使用Autofac和Moq進行集成測試

[英]Integration Test Using Autofac and Moq

使用Autofac和moq進行集成測試是一個好主意嗎? 我在網上找到的大多數示例和文檔,都集中在單元測試中使用二者。 集成測試有什么好的例子嗎? 通過集成測試,我指的是某種方法,例如按紐,按自上而下或三明治式。

我建議您定義集成測試的含義,因為該術語沒有一個公認的定義。 我假設您的意思是單獨測試整個應用程序,即一起測試多個(也許數百個)類,但不與外部系統(例如數據庫,http服務)進行交互。

在項目中引入某種依賴注入或控制反轉是一個好主意。 無論您使用Autofac還是其他解決方案,集成測試的好處都是相同的-依賴注入使您可以使用在內存中運行的模擬或存根版本替換與外界通信的系統部分(例如DAO) 。 例如,在生產中,您可能會使用由外部MSSQL數據庫支持的DAO,但在集成測試中,您可能會使用由內存中Dictionary或HashMap支持的存根DAO。

至於Moq,我不建議您使用Moq進行集成測試。 模擬對於單元測試非常有用,因為單元測試可以在系統中測試很小的區域,並且與模擬對象的交互通常很簡單(如果不是,那么您應該重構單元測試!)。 但是,通過集成測試,您正在測試整個系統,並且可能與您嘗試模擬的對象進行很多很多互動。 此外,隨着系統的變化,即使結果保持不變,與模擬的交互也可能會發生變化。 因此,為集成測試設置和維護模擬程序將變得非常困難且乏味,因為通常您必須設置許多很多方法調用。

此外,集成測試可能是多線程的,事情可能並不總是以相同的順序發生。 再次,很難嘲笑!

集成測試的更好方法是實際實現對象的內存版本。 它的行為應盡可能接近真實事物。 您可能必須在內存實現中為此添加其他方法,以進行設置初始狀態(在DAO示例中,設置一些測試數據)或檢查輸出等操作。 從長遠來看,隨着集成測試基礎的增加,您會發現這更加靈活。

需要明確的是,我認為起訂量對於單元測試非常有用,而對於集成測試則不是。

暫無
暫無

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

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