Sie sind auf Seite 1von 24

Mocking it happen!

Unit Tests mit Mockups

Kassel, 29. Januar 2010

Daniel Ludwig, Softwareentwicklung

www.micromata.de © 2009 Micromata GmbH 1


Agenda

Unit Tests
Mocking
Mockito
Mockito vs. EasyMock
PowerMock

www.micromata.de © 2009 Micromata GmbH 2


Unit Tests

Warum?
- Code-Integrität
- Test-Driven-Development
- Dokumentation
Wie?
- Festlegung Eingabeparameter
- Prüfung des Ergebnisses
Input Output
method() Prüfung

www.micromata.de © 2009 Micromata GmbH 3


Unit Tests
Tests beschränken sich auf den Rückgabewert und Exceptions
Methoden ohne Rückgabewert nur eingeschränkt testbar
Interner Ablauf nicht prüfbar
Test-Setup oft aufwendig
Startzeiten u.U. erhöht

www.micromata.de © 2009 Micromata GmbH 4


Mocking - Allgemein

Mock (engl.): Schein, mock: vorgetäuscht, unecht


Dummy ersetzt die konkrete Implementierung
Einsatzgebiete
- Produkt-Design
- GUI Entwicklung
- Programmierung

www.micromata.de © 2009 Micromata GmbH 5


Mocking

vereinfachtes Test-Setup
verbesserte Startzeiten von Tests
Zugriff auf externe Ressourcen vortäuschen
Kontrolle über gemockte Implementierungen

www.micromata.de © 2009 Micromata GmbH 6


Frameworks

Funktionen
- machen eigene Dummyimplentierungen überflüssig
- erzeugen Mockups für Interfaces und Klassen
- partielles Mocking von ausgesuchten Methoden
- Kontrolle über Methoden-Aufrufe von Mockups

www.micromata.de © 2009 Micromata GmbH 7


Frameworks

Grenzen
- Klassen mit final Attribut
- Methoden mit static Attribut
- private Member
- Methoden-Variablen
- testen von Methoden mit private Attribut

www.micromata.de © 2009 Micromata GmbH 8


Mockito

leichtgewichtiges Framework
einfaches Setup
leicht zugängliches Konzept
Mockups von Interfaces und Klassen
Dokumentation in Javadoc (Mockito.class)
detailierte und aussagekräftige Fehlermeldungen

www.micromata.de © 2009 Micromata GmbH 9


Mockito

Dokumentation in Javadoc

www.micromata.de © 2009 Micromata GmbH 10


Mockito

detailierte und aussagekräftige


Fehlermeldungen

www.micromata.de © 2009 Micromata GmbH 11


Mockito - Beispiele

Mock erzeugen

www.micromata.de © 2009 Micromata GmbH 12


Mockito - Beispiele

Mock erzeugen
Antworten des Mocks festlegen
- Return-Values
- Exceptions
Parameter matchen

www.micromata.de © 2009 Micromata GmbH 13


Mockito - Beispiele

Mock erzeugen
Antworten des Mocks festlegen
- Return-Values
- Exceptions
Parameter matchen
Verifikation

www.micromata.de © 2009 Micromata GmbH 14


Mockito - Beispiele

Mock erzeugen
Antworten des Mocks festlegen
- Return-Values
- Exceptions
Parameter matchen
Verifikation
partielles Mocking

www.micromata.de © 2009 Micromata GmbH 15


Mockito vs. EasyMock

EasyMock Library schwergewichtig


EasyMock benötigt Erweiterung zum mocken von Klassen
oftmals kryptische Fehlermeldungen
schwierig in der Handhabung
bei Mockito u.U. redundanter Test-Code

www.micromata.de © 2009 Micromata GmbH 16


Praxisbeispiel

www.micromata.de © 2009 Micromata GmbH 17


Powermock

Ergänzung zu bestehenden Mockup-Frameworks


Ziel: untestbaren Code testbar machen
bietet Utility-Klassen für EasyMock und Mockito
bietet Reflection-Utilities

www.micromata.de © 2009 Micromata GmbH 18


Powermock - Beispiele

Mockups von statischen Methoden und Klassen mit final Attribut

www.micromata.de © 2009 Micromata GmbH 19


Powermock - Beispiele

Mockups von statischen Methoden und Klassen mit final Attribut


Mockups für private Member und Methoden-Variablen

www.micromata.de © 2009 Micromata GmbH 20


Powermock - Beispiele

Mockups von statischen Methoden und Klassen mit final Attribut


Mockups für private Member und Methoden-Variablen
Private Methoden mit Whitebox testen

www.micromata.de © 2009 Micromata GmbH 21


Powermock - Beispiele

Mockups von statischen Methoden und Klassen mit final Attribut


Mockups für private Member und Methoden-Variablen
Private Methoden mit Whitebox testen

weitere Funktionen der Whitebox:


- getter für Felder, Methoden, Konstruktoren, Methoden
- getter und setter für Member-Variablen
- invoke von Konstruktoren

www.micromata.de © 2009 Micromata GmbH 22


Powermock

MemberModifier
- unterdrücken von Methoden, Konstruktoren und Feldern
- stubbing von Methoden
- ändern von Methoden-Aufrufen

www.micromata.de © 2009 Micromata GmbH 23


Ressourcen

http://www.mockito.org
http://code.google.com/p/powermock/
http://www.easymock.org
http://www.jmock.org

www.micromata.de © 2009 Micromata GmbH 24

Das könnte Ihnen auch gefallen