1

我正在使用 easyMock 进行 JUnit 测试。我想测试一个方法,它获取一个 Project 对象作为其参数,并设置该项目的修改日期并将其保存在 db 中。

所以例如

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 方法。你能否让我知道我做错了什么。

谢谢。

4

1 回答 1

3

是的,这是因为您创建的模拟对象的类型。它希望您的代码在执行一次调用时调用您定义的每个方法。我不记得确切的名称,但我认为它类似于 nicemock,而 strictmock whick 使您的代码执行每个预期的方法。您应该为您的模拟对象使用 EasyMock.createNiceMock()。您遇到的错误是因为它希望您调用 setModifyDate 但您的代码没有用于该调用。

您的调用是意外的,因为您一定没有为该方法放置 EasyMock.expected。您需要添加您的模拟对象 .expected(getMethod).andReturns(something)。

于 2012-07-16T04:14:40.537 回答