Name

Mockito

Homepage

http://mockito.org/

Lizenz

MIT License (MIT)

Untersuchte Version

Mockito-1.8.5

Letzter Untersuchungszeitpunkt

25.06.2011

Kurzbeschreibung

Mockito ist ein Framework zum Erstellen und Benutzen von simplen Mocks in Softwaretests. Es bietet die Möglichkeit, Verhalten von noch nicht implementierten Klassen und Methoden rudimentär zu simulieren, um so das zu testende System, trotz fehlender Teile, testen zu können.

Fazit

Mockito ist sehr simpel in der Anwendung und kommt für die meisten Aufgaben mit nur wenigen Zeilen Code aus. Diese Eigenschaften machen das Framework sowohl für Einsteiger, als auch für Fortgeschrittene interessant. Es legt den Schwerpunkt auf unkomplizierte und intuitive Schnittstellen und überschaubare Funktionsvielfalt, weshalb die Einarbeitungszeit besonders kurz ist und Tests teilweise leserlicher und kürzer ausfallen als bei ähnlichen Frameworks, wie zum Beispiel EasyMock.

Einsatzgebiete

Mockito soll simple Mock-ups für Unit-Tests erzeugen, um die Verifizierung des korrekten Verhaltens von noch unvollständig implementierter Software zu ermöglichen.

Einsatzumgebungen

Das Framework ist nicht an andere Werkzeuge oder IDEs gebunden, der gemeinsame Einsatz mit einem Unit-Test Framework wie JUnit, ist jedoch sehr naheliegend.

Installation

Zur Installation muss lediglich die Mockito .jar Datei in das Projekt eingebunden werden.

Dokumentation

Die Dokumentation wird in Java-Doc Form mit dem Download mitgeliefert. Außerdem gibt es Codebeispiele zu den verschiedenen Funktionalitäten des Frameworks, auf den Mockito Webseiten.

Wartung der Projektseite

Die Projektseite macht einen gut gepflegten Eindruck. Der Aktivitäts-Tracker und die Versionsgeschichte zeigen ein aktives Projekt und stetige Arbeit an kommenden Releases.

Nutzergruppen und Support

Auf den Webseiten von Mockito befinden sich ein Wiki, eine Mailing-Liste und ein Issue-Tracking-System. Der Projektleiter und die meisten Mitwirkenden, haben ihre E-Mail Adressen gelistet.

Intuitive Nutzbarkeit

Die Nutzung ist sehr intuitiv und die Schnittstellen einfach zu verstehen. Da Mockito dem Programmierer eine relativ simple API zur Verfügung stellt, reichen schon sehr kurze Beispiele zum Nachvollziehen der Arbeitsabläufe.

Automatisierung

Mockito kann in Kombination mit Unit-Test Frameworks wie JUnit eingesetzt werden. Außerdem wird das Build-Management-Tool "Maven" unterstützt.

Einführendes Beispiel

Einleitung:

Dieses Beispiel soll einen knappen Überblick über die Benutzung von Mockito vermitteln. Für die Tests wird ein Interface als Grundlage für eine Mock-Klasse verwendet. Das Interface soll eine extrem simple Map darstellen, deren Verhalten Mockito simulieren soll. Die Tests in diesem Beispiel sind JUnit 4 konform, sollten aber im Prinzip ohne weiteres mit anderen Unit-Test Frameworks umsetzbar sein.

Vorbereitung:

Nach dem Anlegen eines neuen Java Projekts, ist es erforderlich, in dieses die neueste Version von Mockito einzubinden. Als nächstes sind das folgende Interface und die Testklasse anzulegen:

Interface: MyMapInterface.java


Testklasse: MockitoTests.java


Resultierende Projektstruktur:

Projektstruktur

Durchführung:

Die Testklasse kann wie ein normaler JUnit Test durchgeführt werden.

Testfälle:

Die Testfälle "mockTestBasic" und "mockTestVerification" demonstrieren einfaches aufrufen von Methoden und die zugehörigen Verifikationen.

Der Testfall "mockTestStubbingAndVerification" zeigt, wie Rückgabewerte festgelegt und die Anzahl der Methodenaufrufe überprüft werden können. Aus Platzgründen sind hier verschiedene "verify" Befehle, die teilweise dieselben Aussagen machen, kombiniert in einem Test zusammengefasst.

Der Testfall "mockTestDifferentResult" zeigt die von den Mockito Entwicklern empfohlene Art, unterschiedliche Rückgabewerte bei erneuten Aufrufen einer Methode zu realisieren.

Der Testfall "mockTestExceptions" demonstriert, wie eine Kette von Rückgabewerten und das Werfen von Exceptions realisiert werden können.

Sonstiges:

Die Mock-Klasse in dem Beispiel ist mit der Anweisung "mock(MyMapInterface.class);" angelegt worden. Darüber hinaus besteht die Möglichkeit Mocks über Annotationen zu instanziieren:


Detaillierte Beschreibung

Erweitertes Beispiel: Mockito mit CodeCover

Literatur



Zurück zur Werkzeugübersicht
Zurück zur CSI-Hauptseite