Zum Inhalt springen

Mockito

aus Wikipedia, der freien EnzyklopÀdie
mockito
Mockito Logo
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.

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]

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.addCustomer und CustomerService.deleteAllCustomers so benutzt wurde, wie vorgesehen:
verify(mockedCustomerList).add(customerToAdd);
verify(mockedCustomerList).clear();

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ github.com. (abgerufen am 18. Februar 2025).
  2. ↑ Features and Motivations. Abgerufen am 19. Mai 2011 (englisch).
  3. ↑ Martin Fowler: Mocks Aren’t Stubs. 2007, abgerufen am 19. Mai 2011 (englisch).
  4. ↑ Szczepan Faber: Mockito. 14. Januar 2008, archiviert vom Original (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.
  5. ↑ mockito. simpler & better mocking. Abgerufen am 19. Mai 2011 (englisch).