Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EasyMock JUnit测试在setter方法上抛出错误_Java_Junit_Easymock - Fatal编程技术网

Java EasyMock JUnit测试在setter方法上抛出错误

Java EasyMock JUnit测试在setter方法上抛出错误,java,junit,easymock,Java,Junit,Easymock,我正在使用easyMock进行JUnit测试。我想测试一个方法,该方法获取一个项目对象作为其参数,设置该项目的修改日期并将其保存在db中 例如 public void setProject(Project project) { project.setModifyDate(new Date()); this.reporsitory.persist(project); } 现在在我的测试方法中,我有两个模拟项目。对于其中一个,我设置了getModifyDate的返回值。对于另一个mocked

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

例如

public void setProject(Project project) {
 project.setModifyDate(new Date());
 this.reporsitory.persist(project);
 }
现在在我的测试方法中,我有两个模拟项目。对于其中一个,我设置了getModifyDate的返回值。对于另一个mockedProject对象,我只调用setProject(mockedProject);现在我断言这两个项目对象相等

问题是easymock在我正在测试的类的project.setModifyDate(new Date())上抛出了一个错误

异常:意外的方法调用项目。setModifyDate(..)。。预期值:1,实际值:0

似乎它不希望使用setter方法。你能告诉我我做错了什么吗


谢谢。

是的,这是因为您创建的模拟对象的类型。它期望您的代码在执行一个调用时调用您定义的每个方法。我记不起确切的名称,但我认为它有点像nicemock,而strictmock使您的代码执行所有预期的方法。您应该对模拟对象使用EasyMock.createNiceMock()。您所犯的错误是,它希望您调用setModifyDate,但您的代码没有为该调用提供支持


您的调用是意外的,因为您必须没有为该方法放置EasyMock.expected。您需要添加mock object.expected(getMethod).andReturns(something)。

非常感谢。我使用了createNiceMock(),错误消失了。我将要解决的其他错误。