Java >> Java tutorial >  >> Tag >> assert

AssertJs Java 8-funktioner

Denne artikel er en del af en serie:• Introduktion til AssertJ
• 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
Java tag