【问题标题】:EasyMock JUnit testing throws error on the setter methodEasyMock JUnit 测试在 setter 方法上抛出错误
【发布时间】:2012-07-14 20:40:14
【问题描述】:

我正在使用 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方法。请让我知道我做错了什么。

谢谢。

【问题讨论】:

    标签: java junit easymock


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。我使用了 createNiceMock() 并且该错误消失了。我遇到了其他要解决的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多