Voorwaardelijke tests en aannames
Bepaal wanneer tests in JUnit 5 worden uitgevoerd met annotaties voor voorwaardelijke uitvoering en aannames, zodat uw suite zich aanpast aan het besturingssysteem, de omgeving en runtimeomstandigheden.
Voorwaardelijke tests en aannames is een gratis Testen beheersen: JUnit, Mockito en integratietesten-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Testen beheersen: JUnit, Mockito en integratietesten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Testen beheersen: JUnit, Mockito en integratietesten bevat in totaal 4 lessen.
Niet elke test past bij elke omgeving
Sommige tests zijn alleen zinvol op een bepaald besturingssysteem, een bepaalde JRE of wanneer een service beschikbaar is. Als u ze overal uitvoert, ontstaan er fout-positieve mislukkingen.
JUnit 5 biedt voorwaardelijke uitvoering en aannames om hier op een nette manier mee om te gaan.
Tests uitschakelen en inschakelen
De eenvoudigste regeling is @Disabled, waarmee een test volledig wordt overgeslagen. Voeg altijd een reden toe, zodat het team weet waarom.
@Test
@Disabled("flaky until APIv2 lands")
void legacyFlow() { /* ... */ }Besturingssysteemspecifieke tests
Gebruik @EnabledOnOs of @DisabledOnOs om een test alleen op bepaalde platforms uit te voeren. Dit is ideaal voor tests van bestandssystemen of paden.
@Test
@EnabledOnOs(OS.WINDOWS)
void usesBackslashPaths() { /* ... */ }Voorwaarden voor JRE-versies
@EnabledOnJre en @EnabledForJreRange beperken tests op basis van de Java-versie. Dit is nuttig wanneer een functie alleen in nieuwere runtimes bestaat.
@Test
@EnabledForJreRange(min = JRE.JAVA_17)
void usesSealedClasses() { /* ... */ }Voorwaarden voor omgevingsvariabelen
Voer een test alleen uit wanneer een omgevingsvariabele overeenkomt. Dit is ideaal voor tests die een specifieke implementatiecontext nodig hebben.
@Test
@EnabledIfEnvironmentVariable(named = "ENV", matches = "ci")
void runsOnlyInCi() { /* ... */ }Voorwaarden voor systeemeigenschappen
Op vergelijkbare wijze beperkt @EnabledIfSystemProperty een test op basis van een JVM-systeemeigenschap, zodat u suites vanaf de opdrachtregel kunt in- of uitschakelen.
@Test
@EnabledIfSystemProperty(named = "db", matches = "integration")
void hitsRealDatabase() { /* ... */ }Aangepaste voorwaarden
Voor complexe logica verwijst @EnabledIf naar een methode die een boolean retourneert. De test wordt alleen uitgevoerd als de methode true retourneert.
@Test
@EnabledIf("serverIsReachable")
void callsServer() { /* ... */ }Annotaties tegenover aannames
Voorwaardelijke annotaties beslissen voordat een test start. Aannames beslissen halverwege: als een aanname niet klopt, wordt de test afgebroken (overgeslagen) en niet als mislukt gemarkeerd.
assumeTrue gebruiken
assumeTrue breekt de test af wanneer niet aan een runtimevoorwaarde wordt voldaan. De overige beweringen worden dan niet uitgevoerd en de test wordt als overgeslagen gemarkeerd.
@Test
void onlyWhenOnline() {
assumeTrue(network.isUp());
assertNotNull(client.fetch());
}assumingThat voor gedeeltelijke uitvoeringen
assumingThat voert een blok beweringen alleen uit als aan een voorwaarde wordt voldaan, terwijl de rest van de test altijd wordt uitgevoerd.
assumingThat(isCi(), () -> {
assertEquals("prod", config.profile());
});
assertNotNull(config);Best practices
Gebruik voorwaarden verstandig:
- Geef de voorkeur aan annotaties voor statische voorwaarden die vooraf bekend zijn
- Gebruik aannames voor runtimecontroles
- Geef
@Disabledaltijd een reden - Voorkom dat u te veel tests overslaat, want daardoor blijven echte hiaten in de dekking verborgen
Snelle controle
Test uw kennis van voorwaardelijke uitvoering.
Samenvatting
U hebt bepaald wanneer tests worden uitgevoerd:
@Disabledslaat tests over; annotaties voor besturingssysteem, JRE, omgeving en eigenschappen beperken tests@EnabledIfverwerkt aangepaste voorwaarden- Aannames breken tests tijdens runtime af (slaan ze over), in plaats van ze te laten mislukken
assumingThatvoert beweringen voorwaardelijk gedeeltelijk uit
Dankzij voorwaardelijke uitvoering blijft uw suite groen in uiteenlopende omgevingen.
Leer Testen beheersen: JUnit, Mockito en integratietesten met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Voorwaardelijke tests en aannames” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Testen beheersen: JUnit, Mockito en integratietesten, waaronder “Voorwaardelijke tests en aannames”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Testen beheersen: JUnit, Mockito en integratietesten bevat in totaal 4 lessen.
Wat leer ik in “Voorwaardelijke tests en aannames”?
Bepaal wanneer tests in JUnit 5 worden uitgevoerd met annotaties voor voorwaardelijke uitvoering en aannames, zodat uw suite zich aanpast aan het besturingssysteem, de omgeving en runtimeomstandighed… Je oefent met Testen beheersen: JUnit, Mockito en integratietesten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Testen beheersen: JUnit, Mockito en integratietesten te beginnen?
Ervaring vooraf is niet nodig. Testen beheersen: JUnit, Mockito en integratietesten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Voorwaardelijke tests en aannames”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Testen beheersen: JUnit, Mockito en integratietesten?
Ja. Elke les over Testen beheersen: JUnit, Mockito en integratietesten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Testlevenscyclus en -volgorde
- Geparametriseerde en dynamische tests
- Exceptiontests en time-outs
- Voorwaardelijke tests en aannames