Loading AI tools
Java-Bibliothek Aus Wikipedia, der freien Enzyklopädie
EasyMock ist eine Programmbibliothek zum Erstellen von Mock-Objekten für Unit-Tests von Java-Programmen.
EasyMock | |
---|---|
Basisdaten | |
Hauptentwickler | Tammo Freese, Henri Tremblay |
Entwickler | OFFIS, Tammo Freese, Henri Tremblay |
Aktuelle Version | 5.4.0[1] (1. August 2024) |
Betriebssystem | Plattformübergreifend |
Programmiersprache | Java |
Kategorie | Test-Framework |
Lizenz | Apache-Lizenz 2.0 |
easymock.org |
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.
EasyMock ist die erste Programmbibliothek, die die dynamische Erzeugung von Mock-Objekten basierend auf deren Schnittstelle unterstützt.[2] Es wurde erstmals 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.
Zur Benutzung von EasyMock werden folgende Schritte durchlaufen:
Durch einen Unit Test soll 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 2 und 3 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);
}
Als Alternative zu EasyMock existieren die folgenden Programmbibliotheken, die ebenfalls das dynamische Erzeugen von Mock-Objekten erlauben:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.