Integrationstester med @SpringBootTest
Testa hela applikationskontexten.
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:
@SpringBootTestladdar hela kontextenRANDOM_PORT+TestRestTemplate/WebTestClientför riktig HTTP@Transactionalåterställer databasändringar- Använd testdelar för snabbare tester
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
- Enhetstestning med JUnit och Mockito
- Tester av webblagret med MockMvc
- Integrationstester med @SpringBootTest
- Verkliga beroenden med Testcontainers