【发布时间】:2013-02-12 09:13:50
【问题描述】:
我对 EasyMock 有一个奇怪的问题
这是我正在拨打的电话,它按预期抛出 IllegalStateException : Matcher expected
expect(this.mock.expectedOperation(gt(0l), MyClass.class)).andReturn(createClassObject());
如果我将上述调用替换为
expect(this.mock.expectedOperation(gt(0l), createClass(MyClass.class))).andReturn(createClassObject());
@SuppressWarnings("unchecked")
public static <T> Class<T> createClass(Class<T> clazz)
{
return (Class<T>) EasyMock.anyObject();
}
大多数时候我不会出错,但有时我会。它保持IllegalStateException : Matcher expected ..
有时我会因为这样做而收到IllegalStateException : 2 Matchers expected 1 recorder 错误:
MyClass object = createClassObject();
expect(this.mock.expectedOperation(anyLong(), anyLong()).andReturn(object);
public MyClass createClassObject() {
// Actually sets properties and then returns
return new MyClass();
}
但是当我这样做时它会运行:
expect(this.mock.expectedOperation(anyLong(), anyLong()).andReturn(createClassObject());
在上面的例子中,有时前者运行,后者失败。
有时这会失败:
MyClass object = createClassObject();
expect(this.mock.expectedOperation(1, MyClass.class)).andReturn(object);
我已经四次检查了重置、重播、验证呼叫。 这些测试有时会运行,有时会失败。
如果我运行我的单元测试,它会在上面列出的一种情况下随机失败至少一次。为什么?如何让它运行?
编辑:我使用的是 EasyMock 3.1 版和
MockedClass mock = EasyMock.createMock(MockedClass.class);
【问题讨论】:
-
测试中有没有线程?
标签: java unit-testing easymock