按照標題,只是想知道是否有一個easymock機制來測試一個方法在其生命週期中是否被調用。EasyMock:在模擬中測試該方法不叫
18
A
回答
11
默認情況下,Easymock會爲任何您未明確設置期望的方法引發異常。
14
從EasyMock的documentation:
尼斯嘲笑
論模擬返回的Mock對象()的所有方法的默認行爲是拋出一個AssertionError所有意想不到的方法調用。如果您希望默認允許所有方法調用並返回適當的空值(0,null或false)的「好」Mock對象,請改用niceMock()。
所以你問的是默認行爲。
14
我知道這個問題很老,但我有同樣的問題作爲OP,並做了更多的四處看看。我發現以下解決方案:
在EasyMock聲明結束時添加3210,當調用模擬方法時,測試將失敗。
之所以這比單純地不使用NiceMock更好,並且由於unmocked方法調用而導致測試失敗,是因爲這允許您專門測試在給定場景中未調用XYZ方法。
我想給大衛華萊士信貸這個答案。我發現這個解決方案在他的回答如下:Test that void method didn't get called with EasyMock
+2
我相信這應該是公認的答案。原因是單元測試通常會隨着新的需求而改變,並且很容易錯過爲什麼沒有設定模擬期望。該解決方案使缺少的方法調用顯式化,因此需要更改代碼的人員的更多關注。 – mindreader 2016-06-30 19:36:55
相關問題
- 1. 如何使用EasyMock測試模擬方法
- 2. EasyMock和測試受保護的方法
- 3. 使用EasyMock測試void方法
- 4. Easymock - 嵌套void方法測試(間諜)
- 5. 如何使用EasyMock測試void方法
- 6. 如何使用powermock-easymock來模擬正在測試的方法中的另一個類方法調用?
- 7. PSTN呼叫模擬測試平臺
- 8. 單元測試不叫viewDidAppear方法
- 9. Easymock:正在執行模擬
- 10. 單元測試的模擬DLL方法
- 11. 的EasyMock類擴展模擬不嘲諷方法
- 12. 我該如何模擬easymock中的一個方法,該方法將返回其參數之一?
- 13. Easymock測試方法內部的多個方法調用
- 14. RSpec - 調用應該模擬的私有方法的測試方法
- 15. 測試,記錄註釋的模擬框架支持(首選easymock解決方案)
- 16. 如何用easymock模擬類中的靜態方法?
- 17. 如何模擬使用EasyMock在測試類中實例化的類?
- 18. 測試:模擬模擬
- 19. 我該如何模擬`instanceof`測試?
- 20. EasyMock JUnit測試在setter方法上拋出錯誤
- 21. 在測試初始化方法中模擬HttpContext.Current
- 22. 在jmockit中模擬被測試類的私有方法
- 23. 模擬正在測試的同一類中的方法
- 24. 在ActiveJDBC中模擬findAll()方法進行單元測試
- 25. EasyMock的,由AA模擬
- 26. 如何在受測試的方法中模擬受保護/私有方法?
- 27. 如何使用junit和easymock來模擬靜態方法
- 28. 測試方法叫做產生對象
- 29. 模擬測試期間現有lua文件中的模擬方法
- 30. Junit和EasyMock Servlet測試
我發現默認行爲很煩人,因爲您很容易在測試中「最終」要求測試代碼效率低下。我曾經做過一個簡單的重構,將一個getSomething()調用移到一個循環外部,這導致測試失敗,因爲我沒有調用getSomething 40次(!),而「非常好」的mock鼓勵這種類型的測試(因爲它如果我預期在重構之前只有一次調用,將會失敗)。 – 2011-06-08 09:32:45
@Stein:同意。單元測試應該是細粒度的,理想情況下只測試一件事情。 「不好」的嘲笑阻止了這一點。 – 2011-06-08 10:04:45
從我讀到的問題中,OP想要一個模擬,如果它被調用,將會失敗驗證。好的嘲笑不是OP想要的,因爲當測試期間調用好的模擬器時,它仍然通過驗證。 – 2017-01-20 18:36:03