Påstå, at en Java-valgfri har en vis værdi
1. Oversigt
Når vi tester metoder, der returnerer Valgfrit objekter, skal vi muligvis skrive påstande, der enten kontrollerer, om Valgfri har en værdi, eller kontroller værdien i den.
I dette korte selvstudie ser vi på, hvordan man skriver disse påstande ved hjælp af funktioner fra både JUnit og AssertJ.
2. Test, om en valgfri er tom eller ej
Hvis vi kun skal finde ud af, om Valgfri har en værdi, kan vi hævde på isPresent eller er tom .
2.1. Test Valgfrit Har en værdi
Hvis en Valgfri har en værdi, kan vi hævde på Optional.isPresent :
assertTrue(optional.isPresent());
AssertJ-biblioteket giver dog en mere flydende måde at udtrykke dette på:
assertThat(optional).isNotEmpty();
2.2. Test valgfri er tom
Vi kan vende logikken, når vi bruger JUnit:
assertFalse(optional.isPresent());
Også i Java 11 og fremefter kan vi bruge Optional.isEmpty :
assertTrue(optional.isEmpty());
AssertJ giver os dog også et smart alternativ:
assertThat(optional).isEmpty();
3. Test af værdien af en Valgfri
Ofte ønsker vi at teste værdien i en Valgfri snarere end blot tilstedeværelse eller fravær.
3.1. Brug af JUnit Påstande
Vi kan bruge Optional.get for at angive værdien og derefter skrive en påstand om det:
Optional<String> optional = Optional.of("SOMEVALUE");
assertEquals("SOMEVALUE", optional.get());
Men ved at bruge get kan forårsage en undtagelse, som gør det sværere at forstå en testfejl. Så vi foretrækker måske først at hævde, om værdien er til stede:
assertTrue(optional.isPresent());
assertEquals("SOMEVALUE", optional.get());
Dog Valgfrit understøtter lig-metoden , så vi kan bruge en Valgfri med den korrekte værdi i det som en del af en generel ligestillingspåstand:
Optional<String> expected = Optional.of("SOMEVALUE");
Optional<String> actual = Optional.of("SOMEVALUE");
assertEquals(expected, actual);
3.2. Bruger AssertJ
Med AssertJ, vi kan bruge hasValue flydende påstand :
assertThat(Optional.of("SOMEVALUE")).hasValue("SOMEVALUE");
4. Konklusion
I denne artikel har vi set på et par måder at teste Valgfrit på .
Vi så, hvordan de indbyggede JUnit-påstande kan bruges med isPresent og hent . Vi så også, hvordan Optional.equals giver os en måde at sammenligne Valgfrit på objekter i vores påstande.
Til sidst så vi på AssertJ-påstandene, som giver os et flydende sprog for at kontrollere vores Valgfri værdier.
Som altid er koden, der præsenteres i denne artikel, tilgængelig på GitHub.