Easymock

Easymock
EasyMock
EasyMock Logo
Maintainer Tammo Freese, Henri Tremblay
Entwickler OFFIS, Tammo Freese, Henri Tremblay
Aktuelle Version 3.0[1]
(8. Mai 2010[1])
Betriebssystem Plattformübergreifend
Programmier­sprache Java
Kategorie Test-Framework
Lizenz Apache Lizenz 2.0
easymock.org

EasyMock ist eine Programmbibliothek zum Erstellen von Mock-Objekten für Unit-Tests von Java-Programmen.

Im Unit-Test sollen einzelne Testobjekte (meist Klassen oder Methoden) isoliert von ihrer Umgebung getestet werden. Um einen vollständig isolierten Test zu erreichen, müssen die Schnittstellen, über die das zu testende Objekt auf seine Umgebung zugreift, durch Mock-Objekte ersetzt werden. Die Mock-Objekte fungieren dabei als Platzhalter für die echten Objekte.

Inhaltsverzeichnis

Funktionalität

EasyMock ist die erste Programmbibliothek, die die dynamische Erzeugung von Mock-Objekten basierend auf deren Schnittstelle unterstützt[2]. Es wurde erstmalig auf der OOPSLA im Jahre 2001 vorgestellt. Das Verhalten eines dynamischen Mock-Objekts wird nicht in einer eigenen Klasse programmiert, sondern vor dem Unit-Test aufgezeichnet. Der Ansatz einer dynamischen Erzeugung von Mock-Objekten bietet einige Vorteile gegenüber der statischen Programmierung von Mock-Klassen und Objekten.

  • Es müssen keine Klassen von Hand geschrieben werden.
  • Es muss kein Quellcode der Mock-Klassen mit denen der echten Klassen synchron gehalten werden.
  • Dynamische Mock Objekte sind sicherer gegenüber Refactoring

Zur Benutzung von EasyMock werden folgende Schritte durchlaufen:

  1. Mock-Objekt von der Klasse bzw. Schnittstelle, die simuliert werden soll, erzeugen und dem zu testenden Objekt übergeben.
  2. Erwartetes Verhalten aufzeichnen (basierend auf dem Fluent Interface Entwurfsmuster).
  3. Mock Objekt auf Wiedergabe Modus (Replay) stellen.
  4. Verifizieren (verify(mock)) ob das Mock-Objekt auch so benutzt wurde wie in Schritt zwei spezifiziert.

Typisches Beispiel

Es soll durch einen Unit Test das Verhalten der Service Klasse KundeService verifiziert werden. Diese Klasse hat eine Referenz zu einer Hilfsklasse KundeDAO, welche die Kundendaten aus einer Datenbank liest. Das Data Access Object KundeDAO muss durch ein Mock-Objekt ersetzt werden, um die Klasse KundeService isoliert testen zu können.

Für den ersten Schritt wird die setUp()-Methode des JUnit-Tests überschrieben:

  private IKundeDAO kundeDAOMock;
  private KundeService kundeService;
 
  @Before
  protected void setUp() throws Exception {
    super.setUp();
 
    //Schritt 1: Mock-Objekt erstellen
    kundeDAOMock = EasyMock.createMock(IKundeDAO.class);
 
    // KundenService erzeugen
    kundeService = new KundeService();
 
    // KundenService mit Mock-Objekt versorgen
    kundeService.setKundeDAO(kundeDAOMock);
  }

Die Schritte Zwei und Drei werden in der Test-Methode ausgeführt:

  @Test
  public void testKundenLesen() {
 
    //Schritt 2: Erwartetes Verhalten vom KundeDAO aufzeichnen
 
    // erwartetes Ergebnis erstellen
    List<Kunde> list = new ArrayList<Kunde>();
    list.add(new Kunde("Müller"));
    list.add(new Kunde("Meier"));
 
    // erwarteten Methodenaufruf am Mock-Objekt mit Ergebnis aufzeichnen
    EasyMock.expect(kundeDAOMock.findAll()).andReturn(list);
 
 
    //Schritt 3: Aufnahme beendet!
    EasyMock.replay(kundeDAOMock);
 
 
    //Eigentlichen Test durchführen
    kundeService.leseAlleKunden();
 
    //Prüfen, dass alle erwarteten Methoden am Mock-Objekt aufgerufen wurden.
    EasyMock.verify(kundeDAOMock);
  }

Alternativen

Als Alternative zu EasyMock existieren die folgenden Programmbibliotheken, die ebenfalls das dynamische Erzeugen von Mock-Objekten erlauben:

Literatur

  • David Astels: Test Driven Development: A Practical Guide. Prentice Hall International, 2003, ISBN 0131016490.
  • Vincent Massol, Ted Husted: JUnit in Action. Manning, 2003, ISBN 1930110995.
  • Johannes Link: Softwaretests mit JUnit. Dpunkt Verlag, 2005, ISBN 3898643255.
  • Michael Hüttermann: Agile Java-Entwicklung in der Praxis. O'Reilly, 2007, ISBN 3897214822.

Weblinks

Einzelnachweise

  1. a b EasyMock Homepage
  2. EasyMock Homepage.

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Fluent interface — Текучий интерфейс (англ. fluent interface, название придумано Эриком Эвансом и Мартином Фаулером) способ реализации, в разработке программного обеспечения, объектно ориентированного API, нацеленный на повышение читабельности исходного кода… …   Википедия

  • PowerMock — Dieser Artikel wurde aufgrund von inhaltlichen Mängeln auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf… …   Deutsch Wikipedia

  • Behavior Driven Development — (or BDD) is an Agile software development technique that encourages collaboration between developers, QA and non technical or business participants in a software project. It was originally conceived in 2003 by Dan North D.North,… …   Wikipedia

  • Cactus (Framework) — Jakarta Cactus Entwickler Apache Software Foundation Aktuelle Version 1.8.1 (18. Januar 2009) Betriebssystem …   Deutsch Wikipedia

  • JUnit — Entwickler u.a. Kent Beck und Erich Gamma Aktuelle Version 4.10 (5. Oktober 2011) Betriebssystem Plattformübergreifend Programmier­sprache …   Deutsch Wikipedia

  • Modultest — In der Softwareentwicklung wird ein Computerprogramm üblicherweise in einzelne Teile mit klar definierten Schnittstellen, sogenannte Module, unterteilt. Der Modultest (auch Komponententest oder oft vom engl. unit test als Unittest bezeichnet) ist …   Deutsch Wikipedia

  • Разработка через тестирование — Разработка программного обеспечения Процесс разработки ПО Шаги процесса Анализ • Проектирование • Программирование • Докумен …   Википедия

  • JUnit — Тип Инструмент тестирования Разработчик Кент Бек, Эрик Гамма Операционная система Cross platform Последняя версия 4.11 (14 ноября 2012) Лицензия Common Public License …   Википедия

  • Список программ — Список программ, использующих лицензию MIT Это список программ, использующих Лицензии MIT. Arctic Torrent Banshee  музыкальный проигрыватель Bouncy Castle  криптографический API CakePHP CLiki  вики движок Chord project Compiz  …   Википедия

  • Mockito — is an open source testing framework for Java released under the MIT License. The framework allows the creation of Test Double objects called, Mock Objects in automated unit tests for the purpose of Test driven Development (TDD) or Behavior Driven …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”