2016-10-09 212 views
-4

我是Mockito新手,我已經開始學習它了。但我有一些問題。爲什麼我們需要使用Mockito?據我所知它用於模擬(創建虛擬對象)並在實際運行代碼之前編寫測試用例。但是,如果我想測試我已經實現的代碼來檢查它們是否正常工作,該怎麼辦?我如何使用Mockito測試它?爲什麼要使用Mockito?

例如,我有CRUD方法,並且我想通過使用我的Create方法實際將數據插入數據庫來測試Create是否正常工作,對於其他方法也是如此。我們可以用Mockito來實現嗎?如果沒有,那麼我是否需要爲他們編寫不同的測試用例而不使用Mockito?

+7

你從不嘲笑被測試的類(CUT)。你嘲笑它是_dependencies_。如果您正在測試CRUD方法,則不需要創建數據庫,使用數據填充它,創建連接池,提供連接等。您只需提供一個'mock(Connection.class)'並驗證你的'update()'方法以適當的方式調用'Connection'上的行爲。重申一下,你**從不嘲笑CUT **。 –

+0

只是想知道:你讀過關於Mokito的任何文檔/教程來了解它嗎?似乎你的第一個想法是在這裏放棄一個太過寬泛的問題。 – GhostCat

+0

[什麼是嘲弄?]可能的重複(http://stackoverflow.com/questions/2665812/what-is-mocking) – kryger

回答

1

模擬用於您正在使用的每個班級或服務。 被測試的類別不應該被模擬。假設您正在連接到您的一個工程團隊正在構建的遠程服務,並且您不熟悉其內部功能,但您知道它返回的請求和響應。 在這種情況下,您可以創建該對象的模擬,並在不同情況下使用一組響應返回來定義該對象。每種情況都應該有自己的不同測試,對於每個響應,您應該分別檢查代碼的反應(您正在處理)。

另一個很好的例子是創建一個限制檢查。讓我們想一想在某些情況下可能拋出的異常。 您可以模擬將拋出異常的對象(如果您使用的是模擬,則使用2-3行測試代碼),並且可以檢查您編寫的代碼如何對該異常做出反應。沒有模擬的情況下,拋出異常可能是一件非常複雜的事情,如果你不熟悉小的細節,就不容易使用。當然,Mock使您能夠關注正在檢查的主要功能,使檢查時間非常短。當上市時間是關鍵的時候,這是一個保佑。