2014-09-03 27 views

回答

1

在進行單元測試時,您正在測試一個獨立的方法:所有其他方法都應該正常工作,並且只測試您的方法以預期(指定...)方式運行。

但在很多情況下,預期的方式意味着調用依賴的類的方法(通過依賴注入,如果你想做單元測試)。

由於這些原因,您需要確保這些調用真的完成了...當然他們被調用期望的參數。

例子:

在您的實際應用,你有你的存儲在數據庫中的所有更改的存儲庫類(僅做此!)。但是對於單元測試你的「業務」類(你定義的所有業務規則),你應該嘲笑這個「倉庫」類:然後你必須檢查這個模擬類是否接收到正確的更新數據。

1

一般來說,這兩個問題的答案都是一樣的。

如果您正在測試的單元/方法的要求指定需要該行爲,這很有用。如果這種行爲是必需的,那麼這就是您需要驗證的事實。

如果確保只調用一次特定方法很重要,那麼您可以這樣做。如果一個方法不止一次被調用,那麼不要明確地測試它。請注意,Mockito「verify」方法的默認值是「times(1)」,這意味着它確認該方法只被調用一次。

關於第二個問題,如果完全有可能用不同的參數調用該方法,則可能需要驗證這些參數,並且您不想計算這些出現的次數,只關心一組特定的參數值。

+0

你能否給我一個真實的用例檢查參數? – Shookie 2014-09-06 08:25:53

+0

我不打算構造一個具體的例子。然而,考慮到你正在嘲笑的類實質上就是你的CUT(正在測試的類)正在使用的API。您將對CUT有關於您需要調用的API方法的某些功能要求以及要發送的參數。如果有一種API方法對參數的不同變化執行不同的操作,並且功能需求指定需要特定的行爲,那麼驗證參數值就是指定您已經從該API方法請求了特定的所需行爲。 – 2014-09-08 16:40:38