Testen beheersen: JUnit, Mockito en integratietesten · Les

Mocks maken met Mockito

Gebruik Mockito om mockobjecten voor dependencies te maken, zodat de te testen unit wordt geïsoleerd van zijn samenwerkingspartners.

Les 2 van 411 stappen

Mocks maken met Mockito is een gratis Testen beheersen: JUnit, Mockito en integratietesten-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Testen beheersen: JUnit, Mockito en integratietesten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Testen beheersen: JUnit, Mockito en integratietesten bevat in totaal 4 lessen.

Introductie tot Mockito-mocks

In de vorige les hebben we het concept van een mockobject geleerd. Mocks zijn speciale testdubbels waarmee je het gedrag van afhankelijkheden kunt beheersen.

Nu gaan we aan de slag met Mockito, een populair Java-framework voor mocking, om te zien hoe eenvoudig het is om deze krachtige hulpmiddelen voor je tests te maken.

Waarom mocks maken?

Mocks maken is essentieel voor effectief testen van eenheden:

  • Isolatie: Met mocks kun je één code-eenheid geïsoleerd testen, zonder je zorgen te maken over de echte afhankelijkheden.
  • Controle: Je kunt mocks zo programmeren dat ze zich precies gedragen zoals nodig is voor je testsituatie, en zo verschillende uitkomsten simuleren.
  • Snelheid: Mocks vermijden trage bewerkingen zoals databaseaanroepen of netwerkverzoeken, waardoor je tests veel sneller worden uitgevoerd.

De methode `Mockito.mock()`

De eenvoudigste manier om een mockobject te maken in Mockito is door de statische methode Mockito.mock() te gebruiken. Je geeft de Class of Interface door die je wilt mocken.

De methode retourneert een nieuwe mockinstantie die eruitziet en zich gedraagt als het echte object, maar zonder de bijbehorende implementatielogica.

Voorbeeld van een eenvoudige mock

Laten we een mock maken voor een eenvoudige EmailService-interface. Voer de code uit om te zien hoe een mockobject wordt gemaakt.

import org.mockito.Mockito;

interface EmailService {
  void sendEmail(String to, String subject, String body);
  String getServiceStatus();
}

public class Main {
  public static void main(String[] args) {
    EmailService mockEmailService = Mockito.mock(EmailService.class);
    System.out.println("Mock created: " + mockEmailService.getClass().getName());
  }
}

Het standaardgedrag van mocks begrijpen

Wat gebeurt er als je een methode op een mock aanroept zonder aan te geven wat deze moet doen?

  • Objecten: Methoden die objecten retourneren, retourneren null.
  • Primitieve typen: Methoden die primitieve typen retourneren, zoals int en boolean, retourneren hun standaardwaarden (0 en false).
  • Collecties: Methoden die collecties retourneren, retourneren lege collecties.
  • Void: Methoden die void retourneren, doen niets.

Standaardgedrag in actie

Laten we een methode op onze mockEmailService aanroepen zonder configuratie. Bekijk de standaardretourwaarde.

import org.mockito.Mockito;

interface EmailService {
  void sendEmail(String to, String subject, String body);
  String getServiceStatus();
}

public class Main {
  public static void main(String[] args) {
    EmailService mockEmailService = Mockito.mock(EmailService.class);
    
    // Calling a method that returns an object
    String status = mockEmailService.getServiceStatus();
    System.out.println("Default status: " + status);
    
    // Calling a void method (does nothing by default)
    mockEmailService.sendEmail("test@example.com", "Hi", "Hello");
    System.out.println("Void method called (no output)");
  }
}

Mocks maken met `@Mock`

Hoewel Mockito.mock() werkt, biedt Mockito voor tests een handigere manier met de annotatie @Mock.

Je declareert eenvoudig een veld met @Mock, waarna Mockito ervoor zorgt dat dit als mockobject wordt geïnitialiseerd.

`@Mock`-annotaties initialiseren

Om @Mock-annotaties te laten werken, moet je Mockito vertellen dat het deze moet verwerken. In JUnit 5 doe je dit meestal met de annotatie @ExtendWith(MockitoExtension.class) op je testklasse.

Je kunt ze ook handmatig initialiseren met MockitoAnnotations.openMocks(this).

Voorbeeld: de annotatie `@Mock` gebruiken

Dit voorbeeld simuleert een testklasse waarin @Mock wordt gebruikt. Voer het uit om te zien hoe de mock wordt geïnitialiseerd via MockitoAnnotations.openMocks().

import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

interface DataRepository {
  String fetchData();
}

// Simulate a test class structure
class MyServiceTest {
  @Mock
  DataRepository mockRepository;

  public MyServiceTest() {
    // Manually open mocks for demonstration in main
    MockitoAnnotations.openMocks(this);
  }
}

public class Main {
  public static void main(String[] args) {
    MyServiceTest testInstance = new MyServiceTest();
    System.out.println("Mocked repository: " + testInstance.mockRepository.getClass().getName());
    System.out.println("Default fetch data: " + testInstance.mockRepository.fetchData());
  }
}

Korte controle over mocks

Je wilt een mockobject maken voor een interface met de naam PaymentGateway. Welke van de volgende opties is een correcte en gebruikelijke manier om dit in Mockito te doen?

Samenvatting: mocks maken

Je hebt de belangrijkste manieren geleerd om mockobjecten te maken met Mockito:

  • Gebruik Mockito.mock(ClassToMock.class) om rechtstreeks een mock te maken.
  • Gebruik de annotatie @Mock op een veld, meestal geïnitialiseerd met @ExtendWith(MockitoExtension.class) in JUnit 5.
  • Mocks retourneren standaardwaarden (null, 0 en false) voor methodeaanroepen als je niets anders configureert.

Vervolgens leer je hoe je controleert of je mocks zoals verwacht zijn aangeroepen!

Gratis beginnen

Leer Testen beheersen: JUnit, Mockito en integratietesten met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Mocks maken met Mockito” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Testen beheersen: JUnit, Mockito en integratietesten, waaronder “Mocks maken met Mockito”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Testen beheersen: JUnit, Mockito en integratietesten bevat in totaal 4 lessen.

Wat leer ik in “Mocks maken met Mockito”?

Gebruik Mockito om mockobjecten voor dependencies te maken, zodat de te testen unit wordt geïsoleerd van zijn samenwerkingspartners. Je oefent met Testen beheersen: JUnit, Mockito en integratietesten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Testen beheersen: JUnit, Mockito en integratietesten te beginnen?

Ervaring vooraf is niet nodig. Testen beheersen: JUnit, Mockito en integratietesten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Mocks maken met Mockito”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Testen beheersen: JUnit, Mockito en integratietesten?

Ja. Elke les over Testen beheersen: JUnit, Mockito en integratietesten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Mocks, stubs en fakes
  2. Mocks maken met Mockito
  3. Interacties met mocks verifiëren
  4. Mocks injecteren met @Mock en @InjectMocks
← Terug naar Testen beheersen: JUnit, Mockito en integratietesten