0
A
回答
1
在進行單元測試時,您正在測試一個獨立的方法:所有其他方法都應該正常工作,並且只測試您的方法以預期(指定...)方式運行。
但在很多情況下,預期的方式意味着調用依賴的類的方法(通過依賴注入,如果你想做單元測試)。
由於這些原因,您需要確保這些調用真的完成了...當然他們被調用期望的參數。
例子:
在您的實際應用,你有你的存儲在數據庫中的所有更改的存儲庫類(僅做此!)。但是對於單元測試你的「業務」類(你定義的所有業務規則),你應該嘲笑這個「倉庫」類:然後你必須檢查這個模擬類是否接收到正確的更新數據。
1
一般來說,這兩個問題的答案都是一樣的。
如果您正在測試的單元/方法的要求指定需要該行爲,這很有用。如果這種行爲是必需的,那麼這就是您需要驗證的事實。
如果確保只調用一次特定方法很重要,那麼您可以這樣做。如果一個方法不止一次被調用,那麼不要明確地測試它。請注意,Mockito「verify」方法的默認值是「times(1)」,這意味着它確認該方法只被調用一次。
關於第二個問題,如果完全有可能用不同的參數調用該方法,則可能需要驗證這些參數,並且您不想計算這些出現的次數,只關心一組特定的參數值。
相關問題
- 1. 嘲笑框架與功能測試,爲什麼要嘲笑?
- 2. 嘲笑單元測試類
- 3. 使用jQuery檢查我嘲笑了一些HTML測試元素
- 4. 單元測試和嘲笑分號
- 5. 如何嘲笑爲單元測試
- 6. 爲什麼SqlDataAdapter.Update只能調用一次?
- 7. 爲什麼只能調用SmtpClient.SendAsync一次?
- 8. 在Wordpress單元測試中嘲笑
- 9. 在單元測試中嘲笑服務
- 10. Toast.makeText只被調用一次
- 11. srand() - 爲什麼只調用它一次?
- 12. 單元測試嘲笑HttpContext的
- 13. 單元測試:調用@PostConstruct定義嘲笑行爲
- 14. 嘲笑單元測試的HttpRequest.Form
- 15. 單元測試模擬不是嘲笑
- 16. Python嘲笑:如何測試遞歸函數的調用次數?
- 17. TouchesBegan只被調用一次
- 18. requestAnimationFrame只被調用一次
- 19. setNeedsDisplay只被調用一次
- 20. 在Java中嘲笑Db單元測試
- 21. viewWillAppear只被調用一次
- 22. 爲什麼查詢被調用兩次?
- 23. Java,單元測試嘲笑mxbean
- 24. 單元測試中嘲笑UnitOfWorkManager.Current
- 25. 嘲笑單元測試中的依賴有什麼好處?
- 26. ABAP單元測試 - 爲什麼我的設置方法被調用兩次?
- 27. 爲什麼構造函數只被調用一次?
- 28. 爲什麼run()只會被調用一次?
- 29. 函數被調用n + 1次而不是一次 - 爲什麼?
- 30. 犀牛嘲笑爲什麼我不能嘲笑一個物業?
你能否給我一個真實的用例檢查參數? – Shookie 2014-09-06 08:25:53
我不打算構造一個具體的例子。然而,考慮到你正在嘲笑的類實質上就是你的CUT(正在測試的類)正在使用的API。您將對CUT有關於您需要調用的API方法的某些功能要求以及要發送的參數。如果有一種API方法對參數的不同變化執行不同的操作,並且功能需求指定需要特定的行爲,那麼驗證參數值就是指定您已經從該API方法請求了特定的所需行爲。 – 2014-09-08 16:40:38