Groovy og Gradle: JVM-automatisering og buildudvikling · Lektion

Test fixtures og delt testkode

Brug pluginnet java-test-fixtures til at dele genanvendelige testhjælpere, builders og fakes på tværs af moduler uden at lække dem ind i produktionskoden.

Lektion 4 af 413 trin

Test fixtures og delt testkode er en gratis Groovy og Gradle: JVM-automatisering og buildudvikling-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Groovy og Gradle: JVM-automatisering og buildudvikling, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Groovy og Gradle: JVM-automatisering og buildudvikling-kurset indeholder 4 lektioner i alt.

Problemet med delt testkode

Flere moduler har ofte brug for de samme testhjælpere (buildere, fakes, fixtures). Copy-paste er skrøbeligt, og hvis du placerer dem i produktionskoden, sendes testklasser kun til produktion.

Introduktion til test-fixtures

Gradle leveres med pluginet java-test-fixtures, som tilføjer et dedikeret testFixtures-kildesæt, hvis kode kan bruges af andre modulers tests.

plugins {
    id("java-library")
    id("java-test-fixtures")
}

Layout for kildesæt

Pluginet opretter src/testFixtures/java. Klasserne her kompileres separat og pakkes i et fixtures-artefakt.

  • src/main produktion
  • src/test tests
  • src/testFixtures delte testhjælpere

Skriv en fixture

Placér genanvendelige buildere i fixture-kildesættet. De kan afhænge af modulets hovedklasser.

public class UserBuilder {
    public static User aUser() {
        return new User("test", 42);
    }
}

Brug af fixtures i modulet

Modulets egne tests kan automatisk se dets fixtures; der kræves ingen ekstra konfiguration.

@Test
void usesFixture() {
    User u = UserBuilder.aUser();
    assertEquals(42, u.getId());
}

Brug af fixtures på tværs af moduler

Et andet modul deklarerer en afhængighed til fixtures ved hjælp af hjælperen testFixtures().

dependencies {
    testImplementation(testFixtures(project(":core")))
}

Fixture-afhængigheder

Fixtures kan deklarere deres egne afhængigheder med konfigurationen testFixturesImplementation, som holdes adskilt fra produktionsafhængigheder.

dependencies {
    testFixturesImplementation("org.assertj:assertj-core:3.25.0")
}

Hvorfor ikke bare bruge main?

Hvis du placerer testhjælpere i main, lækkes de ind i den publicerede JAR-fil og produktions-classpath, hvilket øger størrelse og risiko. Fixtures holder dem isoleret.

Publicering af fixtures

Fixtures-artefaktet kan publiceres sammen med hoved-JAR-filen, så downstream-forbrugere i andre repositories også kan genbruge dem.

gradle publish

Sammenligning med et separat modul

Du kunne oprette et selvstændigt modul til testhjælpere, men fixtures undgår et ekstra modul, holder hjælperne tæt på den kode, de understøtter, og bruger en tydelig navngivningskonvention.

Bedste praksis

Hold fixtures fokuserede:

  • Placér kun reelt genanvendelige hjælpere her
  • Undgå utilsigtet at lække fixtures ind i main
  • Navngiv buildere og fakes tydeligt

Hurtigt tjek

Test din forståelse af test-fixtures.

Opsummering

Du har lært om test-fixtures:

  • Anvend java-test-fixtures
  • Placér delte hjælpere i src/testFixtures
  • Brug dem med testFixtures(project(...))
  • Holder kode, der kun bruges til tests, ude af produktionsartefakter
Gratis at komme i gang

Lær Groovy 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 “Test fixtures og delt testkode” gratis?

Ja — hele teksten til “Test fixtures og delt testkode” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Groovy og Gradle: JVM-automatisering og buildudvikling-kurset, skal du opgradere til CoddyKit PRO. Groovy og Gradle: JVM-automatisering og buildudvikling-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Test fixtures og delt testkode”?

Brug pluginnet java-test-fixtures til at dele genanvendelige testhjælpere, builders og fakes på tværs af moduler uden at lække dem ind i produktionskoden. Du øver dig i Groovy og Gradle: JVM-automatisering og buildudvikling 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å Groovy og Gradle: JVM-automatisering og buildudvikling?

Der kræves ingen tidligere erfaring. Groovy og Gradle: JVM-automatisering og buildudvikling 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 4 af 4.

Hvor lang tid tager lektionen “Test fixtures og delt testkode”?

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 Groovy og Gradle: JVM-automatisering og buildudvikling-lektion?

Ja. Alle Groovy og Gradle: JVM-automatisering og buildudvikling-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- og integrationstest
  2. Testrapporter og filtrering
  3. Kodedækning og statisk analyse
  4. Test fixtures og delt testkode
← Tilbage til Groovy og Gradle: JVM-automatisering og buildudvikling