【发布时间】:2012-09-07 09:52:59
【问题描述】:
我正在使用 Mockito 来验证 InOrder 对象的方法调用顺序。但我对调用的总顺序不感兴趣,只是在调用其他一些方法之前发生了一组方法调用。比如这样的
@Test
public void testGroupOrder() {
Foo foo1 = mock(Foo.class);
Foo foo2 = mock(Foo.class);
Bar underTest = new Bar();
underTest.addFoo(foo1);
underTest.addFoo(foo2);
underTest.fire()
InOrder inOrder = inOrder(foo1,foo2);
inorder.verify(foo1).doThisFirst();
inorder.verify(foo2).doThisFirst();
inorder.verify(foo1).beforeDoingThis();
inorder.verify(foo2).beforeDoingThis();
}
但是这个测试确实测试了太多,因为它测试了Foo 实例的顺序。但我只对不同方法的顺序感兴趣。事实上,我希望 underTest 不区分 Foo 的实例,它可能有内部顺序或没有,所以调用 foos 的顺序无关紧要。我想保留它作为实现细节。
但重要的是,doThisFirst() 已在 所有 foo 上调用,然后在 任何 其他 foo 上调用 beforeDoingThis()。可以用 Mockito 来表达吗?怎么样?
【问题讨论】:
标签: java unit-testing tdd mockito verification