Mestrer test: JUnit, Mockito og integrationstest · Lektion

Unit-tests kontra integrationstests

Skeln tydeligt mellem unit-tests og integrationstests, og forstå deres omfang og formål i testpyramiden.

Lektion 1 af 411 trin

Unit-tests kontra integrationstests er en gratis Mestrer test: JUnit, Mockito og integrationstest-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Mestrer test: JUnit, Mockito og integrationstest, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Mestrer test: JUnit, Mockito og integrationstest-kurset indeholder 4 lektioner i alt.

Velkommen til testtyper

I softwareudvikling er testning afgørende. Men alle tests er ikke ens! Vi ser på to grundlæggende typer: enhedstests og integrationstests.

Hvis du forstår forskellene, bliver det lettere at skrive effektive tests og udvikle robuste applikationer.

Forstå "en enhed"

Før vi går i gang med enhedstests, hvad er en "enhed" så egentlig?

  • En enhed er den mindste testbare del af en applikation.
  • Det kan være en enkelt metode, en klasse eller et lille modul.
  • Det afgørende er, at den udfører en bestemt, isoleret funktion.

Enhedstest: Fokus på isolering

En enhedstest fokuserer på at teste en enkelt "enhed" af kode isoleret.

  • Den verificerer, at en bestemt metode eller klasse fungerer som forventet.
  • Disse tests er typisk meget hurtige og har ingen eksterne afhængigheder.
  • Tænk på det som at kontrollere, om et enkelt tandhjul i en maskine fungerer perfekt på egen hånd.

Enkelt eksempel på enhedstest

Forestil dig en simpel metode til en beregner. En enhedstest ville kun kontrollere denne metode.

Denne test har ikke brug for en database eller netværksforbindelse, kun klassen Calculator.

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
  }
}

Integrationstest: Forbindelse af dele

En integrationstest verificerer, at forskellige enheder eller komponenter i en applikation fungerer korrekt sammen.

  • Den kontrollerer samspillet mellem moduler, tjenester eller endda eksterne systemer som databaser.
  • Disse test er bredere i omfang og ofte langsommere end enhedstest.
  • Tænk på det som at kontrollere, om to eller flere tandhjul griber ind i hinanden og drejer jævnt sammen.

Eksempel på en simpel integrationstest

Forestil dig en UserService, der bruger en UserRepository til at gemme brugere. En integrationstest kontrollerer, om UserService kan gemme en bruger i databasen via UserRepository.

Det omfatter begge komponenter og muligvis en forbindelse til en rigtig database eller en simuleret database.

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

Enhedstest kontra integrationstest: Vigtige forskelle

  • Omfang: Enhedstest fokuserer på en enkelt enhed, mens integrationstest fokuserer på samspillet mellem enheder.
  • Afhængigheder: Enhedstest isoleres fra afhængigheder, mens integrationstest bruger rigtige afhængigheder eller realistiske simuleringer.
  • Hastighed: Enhedstest er hurtige, mens integrationstest typisk er langsommere.
  • Formål: Enhedstest bekræfter den individuelle logik, mens integrationstest bekræfter samarbejdet mellem komponenter.

Testpyramiden forklaret

Testpyramiden er en visuel metafor for softwaretest. Den foreslår, at du skriver:

  • Mange enhedstest (basen, hurtige og billige).
  • Færre integrationstest (det mellemste lag, langsommere, men med større dækning).
  • Endnu færre ende-til-ende-test (toppen, de langsomste, som dækker hele systemet).

Denne balance hjælper dig med at opnå god dækning effektivt.

Valg af den rigtige testtype

Hvornår skal du skrive en enhedstest i stedet for en integrationstest?

  • Vælg enhedstest til kompleks forretningslogik, algoritmer eller hjælpefunktioner, der ikke afhænger af eksterne systemer.
  • Vælg integrationstest, når du skal bekræfte, at din kode interagerer korrekt med databaser, API'er, filsystemer eller andre tjenester.

Hurtigt tjek: Testtyper

Du har opbygget en ny funktion, der modtager brugerinput, behandler det med en kompleks beregning og derefter gemmer resultatet i en database.

Hvilken testtype er bedst egnet til at verificere, at selve den komplekse beregning fungerer korrekt, uafhængigt af samspillet med databasen?

Opsummering: Enhedstest kontra integrationstest

Godt klaret! Du har lært de grundlæggende forskelle mellem enhedstest og integrationstest.

  • Enhedstest er små, hurtige, isolerede og kontrollerer individuelle komponenter.
  • Integrationstest verificerer samspillet mellem komponenter, er bredere og omfatter afhængigheder.

Disse to testtyper udgør kernen i effektiv softwaretest og sikrer, at både individuelle dele og deres forbindelser fungerer pålideligt.

Gratis at komme i gang

Lær Mestrer test: JUnit, Mockito og integrationstest med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Unit-tests kontra integrationstests” gratis?

Ja — alle 3 lektioner i læringssporet Mestrer test: JUnit, Mockito og integrationstest, inklusive “Unit-tests kontra integrationstests”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Mestrer test: JUnit, Mockito og integrationstest-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Unit-tests kontra integrationstests”?

Skeln tydeligt mellem unit-tests og integrationstests, og forstå deres omfang og formål i testpyramiden. Du øver dig i Mestrer test: JUnit, Mockito og integrationstest med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Mestrer test: JUnit, Mockito og integrationstest?

Der kræves ingen tidligere erfaring. Mestrer test: JUnit, Mockito og integrationstest på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Unit-tests kontra integrationstests”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Mestrer test: JUnit, Mockito og integrationstest-lektion?

Ja. Alle Mestrer test: JUnit, Mockito og integrationstest-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Unit-tests kontra integrationstests
  2. Opsætning af integrationstests
  3. Test af databaseinteraktioner
  4. Test af eksterne API'er med WireMock
← Tilbage til Mestrer test: JUnit, Mockito og integrationstest