java - EasyMock 给出意想不到的结果,表示预期为 1,实际为 0

标签 java unit-testing junit easymock

有了我的模拟,我得到了错误:

redisDao.someMethod(notNull(), notNull()): expected 1, actual 0

如果我删除模拟设置,那么当在 Debug模式下进行跟踪时,它会转到方法 redisDao.someMethod,然后因空指针异常而失败。

这对我来说没有意义,并且不确定如何解决这个问题?

mockMaker = EasyMock.createStrictControl();
redisDaoMock = mockMaker.createMock(redisDao.class);

userService.setRedisDao(redisDaoMock);

expect(redisDaoMock.someMethod(EasyMock.<String>notNull(), EasyMock.<String>notNull())).andReturn(someReturn);

mockMaker.replay();
mockMaker.verify();

userController.get(request, response);

// assertions here

最佳答案

我认为你的问题是你正在创建一个“严格”的模拟对象,它希望你调用你放在 expect() 中的方法。如果您的代码没有执行预期的方法调用,它会为您提供预期的 1 实际 0 消息。

您可以使用 EasyMock.createNiceMock() 而不是 createStrictControl,这应该会消失。或者只是确保您的代码调用您在 Expect 调用中告诉它的方法。

您可能还需要在 expect 调用的末尾添加一个 .anytimes() ,这样即使它没有被调用,也可以。

This page has some good explanations and even has your error

关于java - EasyMock 给出意想不到的结果,表示预期为 1,实际为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8737509/

相关文章:

java - 什么是 com.sun.proxy.$Proxy

java - 如何使用 String 方法打印对象值

java - Hibernate继承查询

java - CXF - 未找到类附件的消息正文阅读器

c++ - 在C++单元测试上下文中,抽象基类是否应具有其他抽象基类作为函数参数?

java - TDD:我是否必须定义我的代码不应该做的所有事情?

python - Flask 应用程序单元测试断言错误

Android 单元测试验证 OnCreate 是否发送 Intent 并显示该 fragment

java - 通过 Ant 运行测试时出现 NoClassDefFoundError 但在 Tomcat 中部署时工作正常

java - Mockito 超时如何工作?