Mockito
| mockito | |
|---|---|
| Basisdaten | |
| Hauptentwickler | Szczepan Faber |
| Entwickler | Szczepan Mikolaj Faber |
| Aktuelle Version | 5.9.0 (14. Januar 2024) |
| Betriebssystem | PlattformĂŒbergreifend |
| ProgrammierÂsprache | Java |
| Kategorie | Test-Framework |
| Lizenz | MIT-Lizenz[1] |
| mockito.org | |
Mockito ist eine freie (MIT-Lizenz) Programmbibliothek zum Erstellen von Mock-Objekten fĂŒr Unit-Tests von Java-Programmen.
FunktionalitÀt
[Bearbeiten | Quelltext bearbeiten]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. Mockito hilft dabei dem Entwickler der Unit-Tests, diese Mock-Objekte samt ihrem Verhalten zu generieren und gegebenenfalls auch zu prĂŒfen, wie diese vom zu testenden Code aufgerufen wurden. Die Mock-Objekte werden dabei Ă€hnlich wie bei anderen Mocking-Frameworks zur Laufzeit dynamisch generiert. Es mĂŒssen somit keine Klassen von Hand geschrieben oder deren Quellcode mit denen der echten Klassen synchron gehalten werden. Dynamische Mock-Objekte sind somit sicherer gegenĂŒber Refactoring. Mittels Mockito können Klassen und Interfaces gleichermaĂen gemockt werden.
Mockito unterscheidet sich von anderen Mocking-Frameworks insofern, als mit Mockito die Entwickler das Verhalten des zu testenden Systems verifizieren können, ohne im Vorfeld diesbezĂŒgliche Annahmen zu treffen.[2] Damit wird die oft kritisierte enge Kopplung von Unit-Tests an den getesteten Code[3] reduziert.
Geschichte
[Bearbeiten | Quelltext bearbeiten]Das mockito-Projekt wurde 2007 ins Leben gerufen vom Programmierer Szczepan Faber, der mit der KomplexitĂ€t vorhandener Mocking-Frameworks unzufrieden war. Er begann mit der Erweiterung der Syntax und FunktionalitĂ€t von EasyMock â einem Ă€hnlichen Mocking-Framework fĂŒr Java â schrieb aber schlussendlich den meisten Code fĂŒr Mockito um.[4] Die erste Version von Mockito wurde Anfang 2008 fĂŒr ein Projekt beim The Guardian in London verwendet.[5]
Verwendung
[Bearbeiten | Quelltext bearbeiten]Eine mögliche Verwendung von Mockito kann wie folgt aussehen:
- Klasse, die getestet werden soll:
class CustomerService {
private List<Customer> customers;
public CustomerService(List<Customers> initialCustomers) {
this.customers = initialCustomers;
}
public void addCustomer(Customer customer) {
this.customers.add(customer);
}
public void deleteAllCustomers() {
this.customers.clear();
}
}
- Mock-Objekt von der Klasse bzw. Schnittstelle, die simuliert werden soll, erzeugen:
List mockedCustomerList = mock(List.class);
- Mock-Objekt im Unit-Test benutzen:
CustomerService customerService= new CustomerService(mockedCustomerList);
Customer customerToAdd = new Customer("Max Mustermann");
customerService.addCustomer(customerToAdd);
customerService.deleteAllCustomers();
- Verifizieren, ob das Mock-Objekt von den Methoden
CustomerService.addCustomerundCustomerService.deleteAllCustomersso benutzt wurde, wie vorgesehen:
verify(mockedCustomerList).add(customerToAdd);
verify(mockedCustomerList).clear();
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Weblinks
[Bearbeiten | Quelltext bearbeiten]- Offizielle WebprÀsenz
- Mockito bei Github
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- â github.com. (abgerufen am 18. Februar 2025).
- â Features and Motivations. Abgerufen am 19. Mai 2011 (englisch).
- â Martin Fowler: Mocks Arenât Stubs. 2007, abgerufen am 19. Mai 2011 (englisch).
- â Szczepan Faber: Mockito. 14. Januar 2008, archiviert vom (nicht mehr online verfĂŒgbar) am 29. MĂ€rz 2010; abgerufen am 19. Mai 2011 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprĂŒft. Bitte prĂŒfe Original- und Archivlink gemÀà Anleitung und entferne dann diesen Hinweis.
- â mockito. simpler & better mocking. Abgerufen am 19. Mai 2011 (englisch).