Opsætning af integrationstests
Konfigurér dit projekt til at understøtte integrationstests, herunder håndtering af testmiljøer og afhængigheder.
Opsætning af integrationstests er en gratis Mestrer test: JUnit, Mockito og integrationstest-lektion på CoddyKit. Dette er lektion 2 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.
Introduktion til opsætning af integrationstest
Velkommen til opsætningen af integrationstest! Efter at have lært forskellen mellem enheds- og integrationstest er det tid til at forberede projektet.
En korrekt opsætning er afgørende for, at integrationstest kan køre pålideligt. Den sikrer, at dine test er isolerede, kan gentages og ikke forstyrrer dit udviklingsmiljø.
Separate kildekodemapper
Det første trin er at adskille dine integrationstest tydeligt fra dine enhedstest. Det hjælper med at organisere kodebasen og gør det muligt for byggeværktøjer at behandle dem forskelligt.
- Enhedstest: Ligger typisk i
src/test/java. - Integrationstest: Placeres ofte i en dedikeret mappe som
src/it/javaellersrc/integrationTest/java.
Denne adskillelse gør det lettere at køre dem på forskellige trin i byggeprocessen.
Maven: Konfiguration af IT-kilder
Hvis du bruger Maven, skal du fortælle din pom.xml, at den skal genkende den nye kildekodemappe til integrationstest. build-helper-maven-plugin bruges ofte til dette.
Den tilføjer src/it/java som en kildekodemappe til test, så Maven kan kompilere dine integrationstest.
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>add-integration-test-sources</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/it/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
</project>Gradle: Konfiguration af IT-kilder
For Gradle-brugere er det enkelt at definere et separat kildesæt til integrationstest. Det gør det muligt at kompilere og køre integrationstest uafhængigt.
Eksemplet nedenfor viser, hvordan du definerer et kildesæt med navnet integrationTest og konfigurerer dets afhængigheder.
sourceSets {
integrationTest {
java.srcDir 'src/it/java'
resources.srcDir 'src/it/resources'
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
configurations {
integrationTestImplementation.extendsFrom testImplementation
integrationTestRuntimeOnly.extendsFrom testRuntimeOnly
}
task integrationTest(type: Test) {
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath
shouldRunAfter test
}
check.dependsOn integrationTestVigtige testafhængigheder
Integrationstest kræver ofte specifikke afhængigheder, som enhedstest måske ikke kræver. Det kan omfatte:
- Databaser i hukommelsen: Som H2 eller HSQLDB til hurtig, isoleret databasetest.
- Testcontainers: Et bibliotek til at starte containere med rigtige tjenester (databaser, meddelelseskøer) i Docker.
- Webtest-rammeværk: Til test af weblag (f.eks. Spring's
spring-test,MockMvc).
Tilføj disse til afhængighedsomfanget for dine test eller integrationstest.
Maven Failsafe-plugin
Mens Mavens Surefire-plugin kører enhedstest, er Maven Failsafe Plugin udviklet til integrationstest.
Det udfører test i faserne integration-test og verify og sikrer, at en eventuel forberedelse, f.eks. opstart af en server, sker før testene, og at oprydningen sker bagefter.
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.2.5</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
</project>Dedikeret testkonfiguration
Integrationstest har ofte brug for en anden konfiguration end hovedapplikationen eller enhedstestene. De kan f.eks. oprette forbindelse til en bestemt testdatabase eller bruge andre URL'er til eksterne tjenester.
Det er god praksis at bruge separate konfigurationsfiler (f.eks. application-it.properties til Spring Boot), som tilsidesætter standardindstillingerne under kørsel af integrationstest.
Forberedelse af testmiljøet
Før integrationstest køres, skal du ofte forberede miljøet. Det kan omfatte:
- Opstart af en indlejret database.
- Opstart af Docker-containere til eksterne tjenester ved hjælp af Testcontainers.
- Initialisering af specifikke testdata.
JUnit's annotationer @BeforeAll og @AfterAll er velegnede til at oprette og rydde ressourcer én gang pr. testklasse.
Eksempel på miljøopsætning
Her er et simpelt eksempel, der viser, hvordan du kan bruge @BeforeAll til at "forberede" en ressource til dine integrationstest. Denne opsætning kører én gang før alle test i klassen.
Prøv at køre eksemplet for at se opsætningsmeddelelsen.
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
public class SimpleIntegrationSetupTest {
@BeforeAll
static void setupEnvironment() {
System.out.println("--- Setting up test environment (e.g., starting a database) ---");
// In a real scenario, you'd start a container or connect to a test DB here.
}
@AfterAll
static void tearDownEnvironment() {
System.out.println("--- Tearing down test environment (e.g., stopping a database) ---");
// In a real scenario, you'd stop containers or clean up resources here.
}
@Test
void testSomethingIntegrated() {
System.out.println(" Running an integration test...");
// Your actual integration test logic would go here.
// assert something...
}
public static void main(String[] args) {
// This main method allows the snippet to be runnable.
// In a real project, tests are run by build tools.
System.out.println("This is a placeholder for running the test.");
// You would typically use JUnit's API to run tests programmatically if not using Maven/Gradle.
}
}Spørgsmål om kørsel af IT
Du har konfigureret dit projekt til integrationstest ved hjælp af Maven. Hvilken Maven-kommando bruges typisk til at udføre disse test med Failsafe-pluginet?
Opsummering: Struktureret test
Godt klaret! Du har lært, hvordan du konfigurerer dit projekt til integrationstest.
- Vi adskiller integrationstest i deres egne kildekodemapper (f.eks.
src/it/java). - Byggeværktøjer som Maven (med
build-helper-maven-pluginogmaven-failsafe-plugin) eller Gradle konfigureres til at genkende og køre dem. - Specifikke afhængigheder og dedikerede konfigurationsfiler sikrer isolerede testmiljøer.
@BeforeAllog@AfterAllhjælper med at administrere oprettelse og oprydning af ressourcer.
Denne robuste opsætning giver et solidt grundlag for at skrive effektive integrationstest!
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 “Opsætning af integrationstests” gratis?
Ja — alle 3 lektioner i læringssporet Mestrer test: JUnit, Mockito og integrationstest, inklusive “Opsætning af 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 “Opsætning af integrationstests”?
Konfigurér dit projekt til at understøtte integrationstests, herunder håndtering af testmiljøer og afhængigheder. 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 2 af 4.
Hvor lang tid tager lektionen “Opsætning af 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
- Unit-tests kontra integrationstests
- Opsætning af integrationstests
- Test af databaseinteraktioner
- Test af eksterne API'er med WireMock