Mit dem einfachsten Beispiel von Mockito's examples page kann ich erfolgreich in JUnit ausgeführt werden.Einfache Mockito Verify funktioniert in JUnit aber nicht Spock
Wenn ich jedoch den gleichen Test in Spock ausführen, schlägt es fehl.
JUnit/Java-Version (das geht):
import org.junit.Test;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class SimpleJunitTest
{
@Test
public void basicMockTest()
{
List mockedList = mock(List.class);
//using mock object
mockedList.add("one");
mockedList.clear();
//verification
verify(mockedList).add("one");
verify(mockedList).clear();
}
}
Spock/Groovy Version (dies fehlschlägt):
import static org.mockito.Mockito.mock
import static org.mockito.Mockito.verify
class SimpleSpockTest extends spock.lang.Specification
{
def "Basic Mock Test"()
{
given:
//mock creation
List mockedList = mock(List.class);
when:
//using mock object
mockedList.add("one");
mockedList.clear();
then:
//verification
verify(mockedList).add("one");
verify(mockedList).clear();
}
}
Hier ist der Fehler, den ich, wenn der Spock-Test bekommen schlägt fehl:
Condition not satisfied:
verify(mockedList).add("one")
| | |
| | false
| [email protected] (renderer threw
NullPointerException)
[email protected] (renderer threw
NullPointerException)
at SimpleSpockTest.Basic Mock Test(SimpleSpockTest.groovy:25)
Irgendwelche Ideen oder Vorschläge? Ich mag Spock und Mockito sehr und hoffe, dass sie gut zusammenarbeiten. Vielen Dank!
Ich muss sagen, ich habe versucht, es zu vermeiden, aber Spokes gefälschte Bestätigungsfehlermeldungen sind ziemlich verdammt großartig. –
Danke. Große Fehlermeldungen sind sicherlich ein Markenzeichen von Mockito. Glücklicherweise bekomme ich regelmäßig Feedback von Szczepan (Schöpfer von Mockito), wie man Spock-Fehlermeldungen verbessern kann, und die meiste Zeit höre ich zu, was er sagt. :-) –
Ich komme darauf nach einer Weile zurück, da ich einige Spring-Komponenten verspotten muss und das immer noch nicht mit Spock-Mocks machen kann, und ich habe festgestellt, dass 'Mockito.verify (mock). foo (bar) || true' funktioniert gut für mich und ist einigermaßen lesbar. – chrylis