【发布时间】:2013-12-27 12:25:49
【问题描述】:
我是 EasyMock 的新手,正在努力解决运行测试用例时遇到的以下问题。单元测试因“意外方法调用执行”而失败。首先这是我的应用程序代码:
class Filter {
Filter(FilterExecutor f) {
filter = f;
}
static FilterExecutor filter;
void handle() {
filter.execute(object);
}
//some logic here
};
class FilterExtension extends Filter {
FilterExtension(FilterExecutor f) {
super(f);
}
void handle() {
//some logic here
super.handle();
}
}
测试用例:
class Tests {
FilterExecutor f;
@Override
public void Tests() {
f=EasyMock.createMock(FilterExecutor.class);
}
@Test
public void test1 {
EasyMock.expect(f.execute(object)).andReturn(Obj1);
EasyMock.replay(f);
FilterExtension test = new FilterExtension(f);
test.handle();
//Assert
}
@Test
public void test2 {
//More or less similar to above
EasyMock.expect(f.execute(object)).andReturn(Obj1);
EasyMock.replay(f);
FilterExtension test = new FilterExtension(f);
test.handle();
}
}
如果上述测试用例单独运行,则测试成功通过。如果它们一起运行,则其中一个测试通过,另一个给出断言错误“”UnExpected Method Call execute”。而且如果我在一个测试用例的末尾添加“Filter.filter = null”,那么两个测试用例都是成功了。有人可以解释一下为什么会观察到这种行为吗?
【问题讨论】:
标签: easymock