Testing i praksis: JUnit, Mockito og integrasjonstester · leksjon

Oppretting av mocker med Mockito

Bruk Mockito til å opprette mock-objekter for avhengigheter, slik at enheten som testes isoleres fra samarbeidspartnerne.

Leksjon 2 av 411 trinn

Oppretting av mocker med Mockito er en gratis leksjon i Testing i praksis: JUnit, Mockito og integrasjonstester på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Testing i praksis: JUnit, Mockito og integrasjonstester, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Testing i praksis: JUnit, Mockito og integrasjonstester inneholder totalt 4 leksjoner.

Introduksjon til Mockito-mocks

I forrige leksjon lærte vi om konseptet mockobjekt. Mockobjekter er spesielle testdobler som lar oss kontrollere oppførselen til avhengigheter.

Nå skal vi se nærmere på Mockito, et populært Java-rammeverk for mocking, og se hvor enkelt det er å opprette disse kraftige verktøyene for testene dine.

Hvorfor opprette mockobjekter?

Det er avgjørende å opprette mockobjekter for å kunne skrive effektive enhetstester:

  • Isolasjon: Mockobjekter lar deg teste én enkelt kodeenhet isolert, uten å måtte ta hensyn til de faktiske avhengighetene.
  • Kontroll: Du kan programmere mockobjekter til å oppføre seg nøyaktig slik testscenarioet krever, og simulere ulike resultater.
  • Hastighet: Mockobjekter unngår langsomme operasjoner som databasekall eller nettverksforespørsler, slik at testene kjøres mye raskere.

Metoden `Mockito.mock()`

Den enkleste måten å opprette et mockobjekt på i Mockito er å bruke den statiske metoden Mockito.mock(). Du oppgir Class-en eller Interface-et du vil mocke.

Metoden returnerer en ny mock-instans som ser ut og oppfører seg som det virkelige objektet, men uten den faktiske implementasjonslogikken.

Grunnleggende eksempel på oppretting av mockobjekt

La oss opprette et mockobjekt for et enkelt EmailService-grensesnitt. Kjør koden for å se hvordan et mockobjekt opprettes.

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());
  }
}

Forstå standardoppførselen til mockobjekter

Hva skjer hvis du kaller en metode på et mockobjekt uten å fortelle det hva det skal gjøre?

  • Objekter: Metoder som returnerer objekter, returnerer null.
  • Primitive typer: Metoder som returnerer primitive typer (for eksempel int og boolean), returnerer standardverdiene sine (0 og false).
  • Samlinger: Metoder som returnerer samlinger, returnerer tomme samlinger.
  • Void: Metoder som returnerer void, gjør ingenting.

Standardoppførsel i praksis

La oss kalle en metode på mockEmailService uten noen konfigurasjon. Legg merke til standardreturverdien.

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)");
  }
}

Opprette mockobjekter med `@Mock`

Selv om Mockito.mock() fungerer, tilbyr Mockito en mer praktisk måte å opprette mockobjekter på i tester, nemlig ved å bruke annotasjonen @Mock.

Du erklærer ganske enkelt et felt med @Mock, så sørger Mockito for å initialisere det som et mockobjekt.

Initialisere `@Mock`-annotasjoner

For at @Mock-annotasjoner skal fungere, må du angi at Mockito skal behandle dem. I JUnit 5 gjøres dette vanligvis ved å bruke annotasjonen @ExtendWith(MockitoExtension.class) på testklassen.

Du kan også initialisere dem manuelt ved å bruke MockitoAnnotations.openMocks(this).

Eksempel: Bruke annotasjonen `@Mock`

Dette eksempelet simulerer en testklasse der @Mock brukes. Kjør eksempelet for å se mockobjektet initialisert 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());
  }
}

Kort kontroll av mockobjekter

Du vil opprette et mockobjekt for et grensesnitt som heter PaymentGateway. Hvilket av alternativene nedenfor er en riktig og vanlig måte å gjøre dette på i Mockito?

Oppsummering: Opprette mockobjekter

Du har lært de grunnleggende måtene å opprette mockobjekter på med Mockito:

  • Bruk Mockito.mock(ClassToMock.class) for direkte oppretting.
  • Bruk annotasjonen @Mock på et felt, vanligvis initialisert av @ExtendWith(MockitoExtension.class) i JUnit 5.
  • Mockobjekter returnerer standardverdier (null, 0 og false) for metodekall hvis de ikke er konfigurert på annen måte.

Deretter skal vi lære hvordan du kan kontrollere at mockobjektene ble kalt som forventet!

Gratis å komme i gang

Lær deg Testing i praksis: JUnit, Mockito og integrasjonstester med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Oppretting av mocker med Mockito» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Testing i praksis: JUnit, Mockito og integrasjonstester, inkludert «Oppretting av mocker med Mockito», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Testing i praksis: JUnit, Mockito og integrasjonstester inneholder totalt 4 leksjoner.

Hva lærer jeg i «Oppretting av mocker med Mockito»?

Bruk Mockito til å opprette mock-objekter for avhengigheter, slik at enheten som testes isoleres fra samarbeidspartnerne. Du øver på Testing i praksis: JUnit, Mockito og integrasjonstester med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Testing i praksis: JUnit, Mockito og integrasjonstester?

Ingen tidligere erfaring er nødvendig. Testing i praksis: JUnit, Mockito og integrasjonstester på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Oppretting av mocker med Mockito»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Testing i praksis: JUnit, Mockito og integrasjonstester-leksjonen?

Ja. Alle Testing i praksis: JUnit, Mockito og integrasjonstester-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Mocker, stubber og faker
  2. Oppretting av mocker med Mockito
  3. Verifisering av mock-interaksjoner
  4. Injisering av mocks med @Mock og @InjectMocks
← Tilbake til Testing i praksis: JUnit, Mockito og integrasjonstester