2012-07-16 67 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