gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:57:33 26 4
gpt4 key购买 nike

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

例如

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方法。你能告诉我我做错了什么吗?

谢谢。

最佳答案

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

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

关于java - EasyMock JUnit 测试在 setter 方法上抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com