【发布时间】: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