AssertJs Java 8-funktioner
• AssertJ for Guava
• AssertJs Java 8-funktioner (aktuel artikel)• Custom Assertions med AssertJ
1. Oversigt
Denne artikel fokuserer på AssertJs Java8-relaterede funktioner og er den tredje artikel fra serien.
Hvis du leder efter generel information om dets hovedfunktioner, så kig på den første artikel i serien Introduction to AssertJ og derefter på AssertJ for Guava.
2. Maven Dependencies
Java 8's understøttelse er inkluderet i AssertJ Core-hovedmodulet siden version 3.5.1. For at bruge modulet skal du inkludere følgende afsnit i din pom.xml fil:
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.5.1</version>
<scope>test</scope>
</dependency>
Denne afhængighed dækker kun de grundlæggende Java-påstande. Hvis du vil bruge de avancerede påstande, skal du tilføje yderligere moduler separat.
Den seneste Core-version kan findes her.
3. Java 8-funktioner
AssertJ udnytter Java 8-funktioner ved at levere specielle hjælpemetoder og nye påstande til Java 8-typer.
3.1. Valgfrit Påstande
Lad os oprette en simpel Valgfri eksempel:
Optional<String> givenOptional = Optional.of("something");
Vi kan nu nemt kontrollere, om en Valgfri indeholder en eller anden værdi, og hvad den indeholder værdi er:
assertThat(givenOptional)
.isPresent()
.hasValue("something");
3.2. prædikat Påstande
Lad os skabe et simpelt prædikat instans ved at kontrollere længden af en streng :
Predicate<String> predicate = s -> s.length() > 4;
Nu kan du nemt tjekke hvilken streng s afvises eller accepteres af prædikatet:
assertThat(predicate)
.accepts("aaaaa", "bbbbb")
.rejects("a", "b")
.acceptsAll(asList("aaaaa", "bbbbb"))
.rejectsAll(asList("a", "b"));
3.3. LocalDate Påstande
Lad os starte med at definere to LocalDate objekter:
LocalDate givenLocalDate = LocalDate.of(2016, 7, 8);
LocalDate todayDate = LocalDate.now();
Du kan nu nemt tjekke om en given dato er før/efter en given dato, eller i dag:
assertThat(givenLocalDate)
.isBefore(LocalDate.of(2020, 7, 8))
.isAfterOrEqualTo(LocalDate.of(1989, 7, 8));
assertThat(todayDate)
.isAfter(LocalDate.of(1989, 7, 8))
.isToday();
3.4. LocalDateTime Påstande
LocalDateTime påstande fungerer på samme måde som LocalDate 's, men del ikke isToday metode.
Lad os oprette et eksempel på LocalDateTime objekt:
LocalDateTime givenLocalDate = LocalDateTime.of(2016, 7, 8, 12, 0);
Og nu kan du kontrollere:
assertThat(givenLocalDate)
.isBefore(LocalDateTime.of(2020, 7, 8, 11, 2));
3.5. Lokaltid Påstande
LocalTime påstande fungerer på samme måde som andre java.util.time.* påstande, men de har én eksklusiv metode:hasSameHourAs.
Lad os oprette et eksempel på LocalTime objekt:
LocalTime givenLocalTime = LocalTime.of(12, 15);
og nu kan du hævde:
assertThat(givenLocalTime)
.isAfter(LocalTime.of(1, 0))
.hasSameHourAs(LocalTime.of(12, 0));
3.6. Fladudtrækning Hjælpermetode
FlatExtracting er en speciel hjælpemetode, der bruger Java 8's lambdas til at udtrække egenskaber fra Iterable elementer.
Lad os oprette en simpel liste med LocalDate objekter:
List<LocalDate> givenList = asList(ofYearDay(2016, 5), ofYearDay(2015, 6));
nu kan vi nemt kontrollere, om denne liste indeholder mindst én LocalDate objekt med årstal 2015:
assertThat(givenList)
.flatExtracting(LocalDate::getYear)
.contains(2015);
fladExtracting metoden begrænser os ikke til feltudvinding. Vi kan altid give den en hvilken som helst funktion:
assertThat(givenList)
.flatExtracting(LocalDate::isLeapYear)
.contains(true);
eller endda:
assertThat(givenList)
.flatExtracting(Object::getClass)
.contains(LocalDate.class);
Du kan også udtrække flere egenskaber på én gang:
assertThat(givenList)
.flatExtracting(LocalDate::getYear, LocalDate::getDayOfMonth)
.contains(2015, 6);
3.7. Opfylder Hjælpermetode
Den tilfredsstiller metode giver dig mulighed for hurtigt at kontrollere, om et objekt opfylder alle angivne påstande.
Lad os oprette et eksempel på streng eksempel:
String givenString = "someString";
og nu kan vi give påstande som en lambda krop:
assertThat(givenString)
.satisfies(s -> {
assertThat(s).isNotEmpty();
assertThat(s).hasSize(10);
});
3.8. HasOnlyOneElementSatisfying Hjælpermetode
HasOnlyOneElement hjælpermetoden gør det muligt at kontrollere, om en Iterable instans indeholder nøjagtigt kun ét element, der opfylder de angivne påstande.
Lad os oprette et eksempel på Liste:
List<String> givenList = Arrays.asList("");
og nu kan du hævde:
assertThat(givenList)
.hasOnlyOneElementSatisfying(s -> assertThat(s).isEmpty());
3.9. Match Hjælpermetode
Kampene hjælpermetoden gør det muligt at kontrollere, om et givet objekt matcher det givne prædikat funktion.
Lad os tage en tom streng:
String emptyString = "";
og nu kan vi kontrollere dets tilstand ved at give et passende prædikat lambda funktion:
assertThat(emptyString)
.matches(String::isEmpty);
4. Konklusion
I denne sidste artikel fra AssertJ-serien udforskede vi alle avancerede AssertJ Java 8's funktioner, som afslutter serien.
Implementeringen af alle eksemplerne og kodestykkerne kan findes i GitHub-projektet.
Næste » Brugerdefinerede påstande med AssertJ« ForrigeAssertJ for Guava