Spring Boot 4-mikrotjänster och REST API:er · Lektion

Integrationstester med @SpringBootTest

Testa hela applikationskontexten.

Lektion 3 av 413 steg

Integrationstester med @SpringBootTest är en gratis lektion i Spring Boot 4-mikrotjänster och REST API:er på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Spring Boot 4-mikrotjänster och REST API:er, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Spring Boot 4-mikrotjänster och REST API:er innehåller totalt 4 lektioner.

Vad är ett integrationstest

Ett integrationstest testar flera lager tillsammans — controller, tjänst och repository — med en riktig Spring-kontext.

Det upptäcker problem med sammankoppling och konfiguration som enhetstester missar.

@SpringBootTest

@SpringBootTest startar hela applikationskontexten och laddar alla beans.

@SpringBootTest
class ApplicationIntegrationTest {
    @Autowired
    UserService userService;

    @Test
    void contextLoads() {
        assertThat(userService).isNotNull();
    }
}

Lägen för WebEnvironment

Styr om en riktig server ska startas med attributet webEnvironment.

  • MOCK (standard) — simulerad servletmiljö
  • RANDOM_PORT — riktig server på en slumpmässig port
@SpringBootTest(
    webEnvironment = WebEnvironment.RANDOM_PORT)
class ApiTest { }

Testa med TestRestTemplate

Med en riktig port kan du göra faktiska HTTP-anrop med TestRestTemplate.

@Autowired
TestRestTemplate restTemplate;

@Test
void getsUser() {
    ResponseEntity<User> response =
        restTemplate.getForEntity("/users/1", User.class);
    assertThat(response.getStatusCode())
        .isEqualTo(HttpStatus.OK);
}

WebTestClient

WebTestClient är en fluent-klient som fungerar för både MVC- och WebFlux-appar.

@Autowired
WebTestClient webTestClient;

@Test
void getsUser() {
    webTestClient.get().uri("/users/1")
        .exchange()
        .expectStatus().isOk()
        .expectBody()
        .jsonPath("$.name").isEqualTo("Alice");
}

Använda en testdatabas

Som standard kan Spring Boot ersätta din datasource med en H2-databas i minnet för tester.

@SpringBootTest
@AutoConfigureTestDatabase
class RepositoryIntegrationTest {
    @Autowired UserRepository repository;
}

Testegenskaper

Åsidosätt konfigurationen för tester med @TestPropertySource eller en profil med filen application-test.properties.

@SpringBootTest
@TestPropertySource(properties = {
    "feature.enabled=false"
})
class FeatureTest { }

Aktivera profiler

Använd @ActiveProfiles för att köra med en specifik Spring-profil.

@SpringBootTest
@ActiveProfiles("test")
class ServiceTest { }

Transaktionell återställning

Annotera tester med @Transactional så att varje tests databasändringar automatiskt återställs och testerna förblir isolerade.

@SpringBootTest
@Transactional
class UserPersistenceTest {
    @Test
    void savesAndRollsBack() {
        repository.save(new User("Alice"));
    }
}

Använd testdelar för snabbhet

En fullständig @SpringBootTest är långsam. Föredra testdelar som @DataJpaTest eller @WebMvcTest när du bara behöver ett lager.

@DataJpaTest

@DataJpaTest laddar endast JPA-komponenter och en inbäddad databas — idealiskt för repository-tester.

@DataJpaTest
class UserRepositoryTest {
    @Autowired UserRepository repository;

    @Test
    void findsByName() {
        repository.save(new User("Alice"));
        assertThat(repository.findByName("Alice"))
            .hasSize(1);
    }
}

Snabb kontroll

Testa din förståelse av integrationstestning.

Sammanfattning

Du har lärt dig att skriva integrationstester:

  • @SpringBootTest laddar hela kontexten
  • RANDOM_PORT + TestRestTemplate/WebTestClient för riktig HTTP
  • @Transactional återställer databasändringar
  • Använd testdelar för snabbare tester
Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
24
Lektioner
93

Vanliga frågor

Är lektionen ”Integrationstester med @SpringBootTest” gratis?

Ja – hela texten till ”Integrationstester med @SpringBootTest” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Spring Boot 4-mikrotjänster och REST API:er, kan Ni uppgradera till CoddyKit PRO. Kursen i Spring Boot 4-mikrotjänster och REST API:er innehåller totalt 4 lektioner.

Vad lär jag mig i ”Integrationstester med @SpringBootTest”?

Testa hela applikationskontexten. Ni övar på Spring Boot 4-mikrotjänster och REST API:er med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Spring Boot 4-mikrotjänster och REST API:er?

Du behöver inga förkunskaper. Utbildningen i Spring Boot 4-mikrotjänster och REST API:er på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Integrationstester med @SpringBootTest”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Spring Boot 4-mikrotjänster och REST API:er-lektionen?

Ja. Varje Spring Boot 4-mikrotjänster och REST API:er-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Enhetstestning med JUnit och Mockito
  2. Tester av webblagret med MockMvc
  3. Integrationstester med @SpringBootTest
  4. Verkliga beroenden med Testcontainers
← Tillbaka till Spring Boot 4-mikrotjänster och REST API:er