我有一個奇怪的問題,EasyMock的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);
測試中涉及的任何線程? – 2013-02-12 09:17:58
不是。沒有線程。 – 2013-02-12 09:18:31