2013-12-10 28 views
1

我認爲答案是肯定的,但我無法在easymock documentation中找到任何明確的答案。EasyMock - 你必須在測試後重置()模擬嗎?

當第一次測試嘲笑某個類時,出現錯誤,然後另一個測試正在以常規方式使用此類。這個類在第二個測試中被證明是嘲弄的,並且在意外的調用中失敗。

除了使用EasyMockSupport並在@After方法中調用resetAll()方法(最好不需要在每個類中重複某些內容)之外,是否有自動執行清理的方法?

+0

我使用接口進行模擬,這對類或測試之間沒有影響。 –

回答

2

看來你不需要手動重置模擬。

在我的情況下,模擬類被存儲在一個靜態變量中,一旦這個被糾正,測試開始運行OK。

如果EasyMock報告違規期望被記錄的地方會更好 - 這會使得找到問題的根源變得更容易。

0

「我在第一次測試嘲笑某個類時遇到了錯誤,然後另一個測試正在以常規方式使用這個類,這個類在第二次測試中被嘲笑,並且因意外的調用而失敗。

聽起來好像下列任一可能是真實的:

  1. 您已經創建了,你已經加入到一個工廠一個模擬的依賴性,所以它總是返回這個模擬依賴

  2. 您已經使用power mock爲測試準備了一個類,並且這在測試之間一直存在。

如果其中任何一個是真的,或者發生了其他事情,我會建議您的代碼庫中存在設計缺陷。

如果發生了選項1(例如,在測試返回單例的工廠時它可以),那麼確保模擬依賴在完成之後被替換是單個測試類的工作。

如果發生了方案二的話,或許你會真正喜歡用@PrepareOnlythisForTest

最終,你要查找的內容不應該是必要的。請記住總是負責任地嘲笑。

+1

謝謝,因爲沒有回答我的實際問題。在我剛剛看到的250多個測試用例中找到問題時,您的回答也完全沒有幫助。 –

+0

所以你的模擬被設置爲一個靜態變量。這在很多方面與我指出的工廠示例中的模擬依賴類似。 如果我的回答對你根本沒用,我很樂意將它刪除。 –

+1

那麼我問了一個關於EasyMock的具體問題;你沒有提供直接的答案。軟件工程輔導是不必要的。一旦我從測試作者那裏得到答案,解決方案就變得明顯了。一個有用的anwser會是:「你可以通過X來查看正在創建的測試模擬正在被創建的位置」 –

相關問題