我認爲答案是肯定的,但我無法在easymock documentation中找到任何明確的答案。EasyMock - 你必須在測試後重置()模擬嗎?
當第一次測試嘲笑某個類時,出現錯誤,然後另一個測試正在以常規方式使用此類。這個類在第二個測試中被證明是嘲弄的,並且在意外的調用中失敗。
除了使用EasyMockSupport
並在@After
方法中調用resetAll()
方法(最好不需要在每個類中重複某些內容)之外,是否有自動執行清理的方法?
我認爲答案是肯定的,但我無法在easymock documentation中找到任何明確的答案。EasyMock - 你必須在測試後重置()模擬嗎?
當第一次測試嘲笑某個類時,出現錯誤,然後另一個測試正在以常規方式使用此類。這個類在第二個測試中被證明是嘲弄的,並且在意外的調用中失敗。
除了使用EasyMockSupport
並在@After
方法中調用resetAll()
方法(最好不需要在每個類中重複某些內容)之外,是否有自動執行清理的方法?
看來你不需要手動重置模擬。
在我的情況下,模擬類被存儲在一個靜態變量中,一旦這個被糾正,測試開始運行OK。
如果EasyMock報告違規期望被記錄的地方會更好 - 這會使得找到問題的根源變得更容易。
「我在第一次測試嘲笑某個類時遇到了錯誤,然後另一個測試正在以常規方式使用這個類,這個類在第二次測試中被嘲笑,並且因意外的調用而失敗。
聽起來好像下列任一可能是真實的:
您已經創建了,你已經加入到一個工廠一個模擬的依賴性,所以它總是返回這個模擬依賴
您已經使用power mock爲測試準備了一個類,並且這在測試之間一直存在。
如果其中任何一個是真的,或者發生了其他事情,我會建議您的代碼庫中存在設計缺陷。
如果發生了選項1(例如,在測試返回單例的工廠時它可以),那麼確保模擬依賴在完成之後被替換是單個測試類的工作。
如果發生了方案二的話,或許你會真正喜歡用@PrepareOnlythisForTest
最終,你要查找的內容不應該是必要的。請記住總是負責任地嘲笑。
謝謝,因爲沒有回答我的實際問題。在我剛剛看到的250多個測試用例中找到問題時,您的回答也完全沒有幫助。 –
所以你的模擬被設置爲一個靜態變量。這在很多方面與我指出的工廠示例中的模擬依賴類似。 如果我的回答對你根本沒用,我很樂意將它刪除。 –
那麼我問了一個關於EasyMock的具體問題;你沒有提供直接的答案。軟件工程輔導是不必要的。一旦我從測試作者那裏得到答案,解決方案就變得明顯了。一個有用的anwser會是:「你可以通過X來查看正在創建的測試模擬正在被創建的位置」 –
我使用接口進行模擬,這對類或測試之間沒有影響。 –