2012-07-16 45 views
1

我正在使用easyMock進行JUnit測試。我想測試一個獲取Project對象作爲參數的方法,並設置該項目的修改日期並將其保存在db中。EasyMock JUnit測試在setter方法上拋出錯誤

因此,例如,

public void setProject(Project project) { 
project.setModifyDate(new Date()); 
this.reporsitory.persist(project); 
} 

現在在我的測試方法,我有兩個嘲笑的項目。對於其中的一個,我設置了getModifyDate的返回值。對於另一個模擬項目對象,我只是調用setProject(mockedProject);現在我assertEqual這兩個項目對象。

問題是easymock在我正在測試的類的project.setModifyDate(new Date())拋出一個錯誤。

異常:意外的方法調用project.setModifyDate(..)..預期:1,實際:0。

它似乎並不指望setter方法。你能否讓我知道我做錯了什麼。

謝謝。

回答

3

是的,這是因爲您創建的模擬對象的類型。它期望您的代碼在執行一次調用時調用您定義的每個方法。我不記得確切的名字,但我認爲它就像nicemock,而strictmock whick讓你的代碼執行每個預期的方法。你應該爲你的模擬對象使用EasyMock.createNiceMock()。您有錯誤是因爲它期望您調用setModifyDate,但您的代碼不適用於該調用。

您的電話是意外的,因爲您必須沒有爲該方法放置EasyMock.expected。你需要添加你的模擬對象.expected(getMethod).andReturns(something)。

+0

非常感謝。我使用了createNiceMock(),並且該錯誤消失了。我收到了其他我將要解決的錯誤。 – Sara 2012-07-16 05:00:59