2016-10-09 3 views
-4

Ich bin neu in Mockito und ich habe angefangen, es zu lernen. Aber ich habe ein paar Fragen. Warum brauchen wir Mockito? Soweit ich weiß, wird es verwendet, um Dummy (Dummy-Objekt erstellen) und schreiben Sie die Testfälle, bevor Sie tatsächlichen Code ausführen. Aber was, wenn ich meinen bereits implementierten Code testen möchte, um zu überprüfen, ob sie richtig funktionieren oder nicht. Wie würde ich es mit Mockito testen?Warum Mockito?

Zum Beispiel habe ich CRUD-Methoden und ich möchte testen, ob Create funktioniert ordnungsgemäß durch Einfügen von Daten in der Datenbank mit meiner Create-Methode, ähnlich für andere. Können wir es mit Mockito erreichen? Wenn nicht, muss ich dann verschiedene Testfälle für sie schreiben, ohne Mockito zu benutzen?

+7

Sie nie die Klasse Under Test (die CUT) verspotten. Sie verspotten es _dependencies_. Wenn Sie CRUD-Methoden testen, brauchen Sie keine Datenbank zu erstellen, sie mit Daten zu füllen, einen Verbindungspool zu erstellen, eine Verbindung bereitzustellen usw. Sie stellen lediglich eine 'mock (Connection.class)' zur Verfügung und überprüfen diese dass die '' update() 'Methode das Verhalten auf der' Verbindung' in der entsprechenden Weise aufruft. Um es noch einmal zu wiederholen, ** verspotten Sie nie die CUT **. –

+0

Und ich frage mich: Haben Sie irgendeine Dokumentation über Mokito gelesen, um etwas darüber zu erfahren? Es scheint eher, dass Ihre erste Idee darin bestand, eine viel zu weit gefasste Frage zu stellen. – GhostCat

+0

Mögliches Duplikat von [Was ist Mocking?] (Http://stackoverflow.com/questions/2665812/what-is-mocking) – kryger

Antwort

1

Der Mock wird für jede Klasse oder Dienstleistung verwendet, die Sie verwenden. Die zu testende Klassesollte nicht gespottet werden. Nehmen wir an, Sie stellen eine Verbindung zu einem Remote-Dienst her, der von einem Ihrer Entwicklungsteams erstellt wird, und Sie sind nicht mit seiner internen Funktionalität vertraut, aber Sie wissen, welche Anforderungen und welche Antwort zurückgegeben werden. In diesem Fall können Sie einen Mock dieses Objekts erstellen und ihn mit verschiedenen Antworten in verschiedenen Situationen definieren. Jede Situation sollte einen eigenen Test bekommen und für jede Antwort sollte die Reaktion des Codes (an dem Sie gerade arbeiten) separat überprüft werden.

Ein anderes großartiges Beispiel ist das Erstellen einer Begrenzungsüberprüfung. Denken wir an eine Ausnahme, die in einigen Situationen ausgelöst werden könnte. Sie können das Objekt verwerfen, das die Exception wirft, die einfach ist (~ 2-3 Zeile Testcode, wenn Sie Mock verwenden) und Sie können überprüfen, wie der Code, den Sie geschrieben haben, auf diese Exception reagiert. Ohne das Mock könnte das Werfen einer Ausnahme eine wirklich komplizierte Angelegenheit sein und nicht so einfach zu benutzen, wenn Sie mit den kleinen Details nicht vertraut sind. Und natürlich ermöglicht Ihnen der Mock, sich auf die Hauptfunktionalität zu konzentrieren, die Sie überprüfen, denn dadurch wird die Überprüfungszeit sehr klein. Und das ist ein Segen, wenn Time-to-Market eine kritische Sache ist.