Testing using Mock Obejcts Easymock 3.0 Richard Hauswald Senior Software Engineer Deutsche Software Engineering and Research GmbH
Road Map Theorie Praxis EasyMock Rezepte Fragen / Diskussion Das Problem Was ist ein Mock? Wann sollte man Mock Objekte verwenden? Praxis Mock Implementierung Anonymen Klassen EasyMock EasyMock Rezepte Fragen / Diskussion Weiterführende Links
Das Problem „Wie soll ich denn meinen Code Code testen ohne die ganze Datenbank hochzufahren???“ „Chef, das ist ein FTP Server bei dem jedes Byte Traffic teuer zu bezahlen ist. Dafür kann ich keinen automatisierten Test in die Suite aufnehmen“
Was ist ein Mock? Simuliert Verhalten Ermöglicht isoliertes Testen von Geschäftslogik Ermöglicht Abbildung von schwer bereitzustellenden Abhängigkeiten Hardware Schnittstellen z.B. Handhelds, Waschmaschinen, … Datenbankverbindungen Web Services, Ftp Server, …
Wann sollte man Mock Objekte verwenden? Indikatoren Langsames Laufzeitverhalten Schwierig zu erstellendes Objekt mit Abhängigkeiten auf spezielle Ressourcen Abhängigkeiten auf spezielle Laufzeitumgebungen Abhängigkeiten des Objekts machen einen isolierten Test unmöglich Nicht fertig implementierte Schnittstellen
Praxis
EasyMock Rezepte Mocken von Klassen ohne Interface Mit Exceptions arbeiten Einfache Argumentvergleiche Übersichtliche Asserts durch Captures
Fragen / Diskussion
Weiterführende Links EasyMock Homepage: http://easymock.org/ Eine kleine sehr einfache Einführung: http://tammofreese.de/2005/12/24/easymock-2-0/ Eine ausführliche Einführung: http://www.func.nl/community/knowledgebase/easymock-24-capturing-arguments-passed-mock-objects Ein eher allgemein gehaltener Artikel von Gabriel Schenker http://dotnetslackers.com/articles/designpatterns/To-mock-or-not-to-mock-that-is-the-question-Part-1.aspx