Testing i praksis: JUnit, Mockito og integrasjonstester · leksjon

Enhetstester kontra integrasjonstester

Skill tydelig mellom enhetstester og integrasjonstester, og forstå omfanget og formålet deres i testpyramiden.

Leksjon 1 av 411 trinn

Enhetstester kontra integrasjonstester er en gratis leksjon i Testing i praksis: JUnit, Mockito og integrasjonstester på CoddyKit. Dette er leksjon 1 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.

Velkommen til testtyper

I programvareutvikling er testing avgjørende. Men alle tester er ikke like! Vi skal utforske to grunnleggende typer: enhetstester og integrasjonstester.

Når De forstår forskjellene, blir det lettere å skrive effektive tester og bygge robuste applikasjoner.

Forstå «en enhet»

Før vi går inn på enhetstester, hva er egentlig en «enhet»?

  • En enhet er den minste testbare delen av en applikasjon.
  • Det kan være én enkelt metode, en klasse eller en liten modul.
  • Det viktige er at den utfører en bestemt, isolert funksjon.

Enhetstest: Fokus på isolasjon

En enhetstest fokuserer på å teste én enkelt «enhet» med kode i isolasjon.

  • Den kontrollerer at en bestemt metode eller klasse fungerer som forventet.
  • Disse testene er vanligvis svært raske og har ingen eksterne avhengigheter.
  • Tenk på det som å kontrollere om ett enkelt tannhjul i en maskin fungerer perfekt på egen hånd.

Enkelt eksempel på enhetstest

Se for Dem en enkel kalkulatormetode. En enhetstest ville bare kontrollere denne metoden.

Denne testen trenger verken database eller nettverkstilkobling, bare Calculator-klassen.

class Calculator {
  public int add(int a, int b) {
    return a + b;
  }
}

// In a real JUnit test, you'd use @Test and assertions.
// For now, imagine testing 'add' by itself.
public class Main {
  public static void main(String[] args) {
    Calculator calc = new Calculator();
    int result = calc.add(5, 3);
    System.out.println("Result of add(5, 3): " + result); // Expected: 8
  }
}

Integrasjonstest: Koble sammen deler

En integrasjonstest verifiserer at ulike enheter eller komponenter i en applikasjon fungerer korrekt sammen.

  • Den kontrollerer samhandlingen mellom moduler, tjenester eller til og med eksterne systemer som databaser.
  • Disse testene har et bredere omfang og er ofte tregere enn enhetstester.
  • Tenk på det som å kontrollere om to eller flere tannhjul griper inn i hverandre og går jevnt sammen.

Enkelt eksempel på en integrasjonstest

Se for deg en UserService som bruker en UserRepository til å lagre brukere. En integrasjonstest vil kontrollere om UserService kan lagre en bruker i databasen via UserRepository.

Dette involverer begge komponentene og potensielt en ekte (eller simulert) databasetilkobling.

class UserRepository {
  public void saveUser(String username) {
    // Simulates saving to a database
    System.out.println("Saving user: " + username + " to DB.");
  }
}

class UserService {
  private UserRepository userRepository;

  public UserService(UserRepository userRepository) {
    this.userRepository = userRepository;
  }

  public void registerUser(String username) {
    // Business logic
    userRepository.saveUser(username);
  }
}

public class Main {
  public static void main(String[] args) {
    // In an integration test, you'd wire these up
    // and check if 'saveUser' was called and data persisted.
    UserRepository repo = new UserRepository();
    UserService service = new UserService(repo);
    service.registerUser("Alice");
  }
}

Enhetstest kontra integrasjonstest: viktige forskjeller

  • Omfang: Enhetstester fokuserer på én enkelt enhet, mens integrasjonstester fokuserer på samhandlingen mellom enheter.
  • Avhengigheter: Enhetstester isoleres fra avhengigheter, mens integrasjonstester involverer ekte avhengigheter (eller realistiske simuleringer).
  • Hastighet: Enhetstester er raske, mens integrasjonstester vanligvis er tregere.
  • Formål: Enhetstester bekrefter individuell logikk, mens integrasjonstester bekrefter at komponentene fungerer sammen.

Testpyramiden forklart

Testpyramiden er en visuell metafor for programvaretesting. Den anbefaler å skrive:

  • Mange enhetstester (basen, raske og billige).
  • Færre integrasjonstester (det midterste laget, tregere, men med større dekning).
  • Enda færre ende-til-ende-tester (toppen, tregest og med dekning av hele systemet).

Denne balansen bidrar til god dekning på en effektiv måte.

Velg riktig testtype

Når bør du skrive en enhetstest i stedet for en integrasjonstest?

  • Velg enhetstester for kompleks forretningslogikk, algoritmer eller hjelpemetoder som ikke er avhengige av eksterne systemer.
  • Velg integrasjonstester når du må bekrefte at koden samhandler korrekt med databaser, API-er, filsystemer eller andre tjenester.

Kort sjekk: testtyper

Du har utviklet en ny funksjon som tar imot brukerinndata, behandler dem med en kompleks beregning og deretter lagrer resultatet i en database.

Hvilken type test egner seg best for å kontrollere at selve den komplekse beregningen fungerer korrekt, uavhengig av databasesamhandlingen?

Oppsummering: enhetstest kontra integrasjonstest

Flott jobbet! Du har lært de grunnleggende forskjellene mellom enhets- og integrasjonstester.

  • Enhetstester er små, raske og isolerte, og kontrollerer individuelle komponenter.
  • Integrasjonstester verifiserer samhandling mellom komponenter, har et bredere omfang og involverer avhengigheter.

Disse to testtypene utgjør kjernen i effektiv programvaretesting og sikrer at både individuelle deler og forbindelsene mellom dem fungerer pålitelig.

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 «Enhetstester kontra integrasjonstester» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Testing i praksis: JUnit, Mockito og integrasjonstester, inkludert «Enhetstester kontra integrasjonstester», 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 «Enhetstester kontra integrasjonstester»?

Skill tydelig mellom enhetstester og integrasjonstester, og forstå omfanget og formålet deres i testpyramiden. 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 1 av 4.

Hvor lang tid tar leksjonen «Enhetstester kontra integrasjonstester»?

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. Enhetstester kontra integrasjonstester
  2. Klargjøring av integrasjonstester
  3. Testing av databaseinteraksjoner
  4. Testing av eksterne API-er med WireMock
← Tilbake til Testing i praksis: JUnit, Mockito og integrasjonstester