2014-01-10 1 views
8

dachte ich, das würde funktionieren:Überprüfen zwei Anrufungen des gleichen Verfahrens mit einem weiteren Aufruf Verfahren dazwischen, wenn wichtig ist, um, in Mockito

InOrder inOrder = new InOrder(mock); 
inOrder.verify(mock).method1(); 
inOrder.verify(mock).method2(); 
inOrder.verify(mock).method1(); 

... aber Mockito sagt undesired invocation of mock.method1(). Wanted 1 time, but was 2 times. ich meinen Code dies geändert:

inOrder.verify(times(2), mock).method1(); 
inOrder.verify(mock).method2(); 

Es sollte funktionieren, aber jetzt teste ich nicht, was ich in erster Linie testen wollte. Könnte jemand bitte darauf hinweisen, was ich falsch mache, oder ob Mockito für diese Art von Test zu begrenzt ist?

+1

Es scheint, dass alles in Ordnung mit Ihrem ersten Test ist. Können Sie den Code zeigen, den Sie testen? – pomkine

+0

Sorry, ich habe es falsch verstanden. Wie Sie sagen, das funktioniert tatsächlich. Ich habe mich irgendwo anders geirrt. –

Antwort

4

Es getestet dies mit Mockito 1.9.5 und es funktioniert:

@Test 
public void foo() { 
    Runnable outer = Mockito.mock(Runnable.class, "outer"); 
    Runnable inner = Mockito.mock(Runnable.class, "inner"); 

    outer.run(); 
    inner.run(); 
    outer.run(); 

    InOrder order = Mockito.inOrder(outer, inner); 
    order.verify(outer).run(); 
    order.verify(inner).run(); 
    order.verify(outer).run(); 
} 

Also, wenn Sie arbeiten sollten, sind nichts anderes falsch Code zu tun. Welche Mockito-Version verwendest du?

+0

Ich habe woanders einen Fehler gemacht. Der Test in Ihrer Antwort funktioniert. Wenn ich ein weiteres order.verify (outer) hinzufüge .run(); Unter der letzten Zeile wird der Test jedoch fehlschlagen. Also, ich muss verfolgen, wo aufeinanderfolgende Aufrufe an die gleiche Methode auftritt, und verwenden Sie die times() -Methode dort. –

+1

Ein Vorbehalt: 'order.verify (mock)' funktioniert wie erwartet, wenn es wiederholt wird. 'order.verify (mock, mal (n))' ist gierig und schlägt fehl, wenn in Zukunft mehr als n Anrufe verfügbar sind. Mockito 1.9.5 – Arkadiy

1

Es funktioniert. Ihr Code ruft Methode1 zuerst zweimal und dann Methode2 auf.

Verwandte Themen