【问题标题】:EasyMock expect of void method with null argument passes eventhough actual call has not null argument即使实际调用没有空参数,EasyMock 也期望具有空参数的 void 方法通过
【发布时间】:2014-10-17 07:17:45
【问题描述】:

我有一个类似的方法要测试:

public void testedMethod() {
     mockedObject.doSomething(notNullValue, notNullValue);
}

我有一个测试方法,它对 mockedObject 使用了一个 easymock 模拟,并编写了以下期望:

@Test
public void testMethod() {
   mockedObject.doSomething(null, null);
   replay();

   testObject.testedMethod();
}

我认为这个测试会失败,因为我的期望有空参数,而我的实际调用有非空参数。我预计会出现以下消息的断言错误:

意外的方法调用 mockedObject.doSomething(NotNullValue@sljmf, NotNullValue@djdlfjf)

我想知道,这是 EasyMock 中的错误吗?还是这种预期的行为?

【问题讨论】:

  • 你在打电话给replay(mockedObject)verify(mockedObject)吗?
  • 我们可以对正在发生的事情做出许多假设,因为您没有提供大量细节。你看到什么错误?或者您根本没有看到任何错误?你是如何在 testObject 上设置 mockObject 的?当您调用期望时,您确定 mockedObject 处于记录模式吗?你使用了 replay(),但没有使用 replay(mockedObject),你是这个意思吗?为什么你没有在某处使用 verify() ?
  • 我正在使用 unitils 框架,我通过使用 @Mock 注释来创建模拟对象,并使用 EasyMockUnitils.replay 方法自动对所有模拟对象进行重播。验证也是由 unitils 自动完成的。
  • 同时发现了问题,它出在unitils的@Mock上。它的默认设置是不使用模拟的严格模式。

标签: java unit-testing easymock


【解决方案1】:

mockedObject 不是作为严格模拟创建的。

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多