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

AssertJ for Guava

Denne artikel er en del af en serie:• Introduktion til AssertJ
• AssertJ for Guava (aktuel artikel)• AssertJs Java 8-funktioner
• Brugerdefinerede påstande med AssertJ

1. Oversigt

Denne artikel fokuserer på AssertJ Guava-relaterede påstande og er den anden artikel fra AssertJ-serien. Hvis du vil have lidt generel info om AssertJ, så tag et kig på den første artikel i serien Introduction to AssertJ.

2. Maven Dependencies

For at bruge AssertJ med Guava skal du tilføje følgende afhængighed til din pom.xml :

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-guava</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>

Du kan finde den seneste version her.

Og bemærk, at siden version 3.0.0, AssertJ Guava er afhængig af Java 8 og AssertJ Core 3.x .

3. Guava-påstande i aktion

AssertJ har tilpassede påstande for Guava-typer:ByteSource , Multimap , Valgfrit , Rækkevidde , RangeMap og Tabel .

3.1. ByteSource Påstande

Lad os starte med at oprette to tomme midlertidige filer:

File temp1 = File.createTempFile("bael", "dung1");
File temp2 = File.createTempFile("bael", "dung2");

og oprette ByteSource forekomster fra dem:

ByteSource byteSource1 = Files.asByteSource(temp1);
ByteSource byteSource2 = Files.asByteSource(temp2);

Nu kan vi skrive følgende påstand:

assertThat(buteSource1)
  .hasSize(0)
  .hasSameContentAs(byteSource2);

3.2. Multimap Påstande

Multimap s er kort, der kan knytte mere end én værdi til en given nøgle. Multikortet påstande fungerer stort set på samme måde som normalt Kort implementeringer.

Lad os starte med at oprette et Multimap instans og tilføje nogle poster:

Multimap<Integer, String> mmap = Multimaps
  .newMultimap(new HashMap<>(), Sets::newHashSet);
mmap.put(1, "one");
mmap.put(1, "1");

Og nu kan vi hævde:

assertThat(mmap)
  .hasSize(2)
  .containsKeys(1)
  .contains(entry(1, "one"))
  .contains(entry(1, "1"));

Der er også to yderligere påstande tilgængelige – med subtil forskel mellem dem:

  • containsAllEntriesOf og
  • har Samme EntriesAs.

Lad os tage et kig på disse to påstande; vi starter med at definere et par kort:

Multimap<Integer, String> mmap1 = ArrayListMultimap.create();
mmap1.put(1, "one");
mmap1.put(1, "1");
mmap1.put(2, "two");
mmap1.put(2, "2");

Multimap<Integer, String> mmap1_clone = Multimaps
  .newSetMultimap(new HashMap<>(), HashSet::new);
mmap1_clone.put(1, "one");
mmap1_clone.put(1, "1");
mmap1_clone.put(2, "two");
mmap1_clone.put(2, "2");

Multimap<Integer, String> mmap2 = Multimaps
  .newSetMultimap(new HashMap<>(), HashSet::new);
mmap2.put(1, "one");
mmap2.put(1, "1");

Som du kan se, mmap1 og mmap1_clone indeholder nøjagtig de samme poster, men er to forskellige objekter af to forskellige Kort typer. Kort mmap2 indeholder en enkelt post, der deles mellem alle kort. Nu er følgende påstand sand:

assertThat(mmap1)
  .containsAllEntriesOf(mmap2)
  .containsAllEntriesOf(mmap1_clone)
  .hasSameEntriesAs(mmap1_clone);

3.3. Valgfrit Påstande

Påstande for Guavas Valgfri involvere værditilstedeværelseskontrol og værktøjer til at udvinde den indre værdi.

Lad os starte med at oprette en Valgfri eksempel:

Optional<String> something = Optional.of("something");

Og nu kan vi kontrollere værdiens tilstedeværelse og hævde det Valgfrie 's indhold:

assertThat(something)
  .isPresent()
  .extractingValue()
  .isEqualTo("something");

3.4. Rækkevidde Påstande

Påstande for Guavas Range klasse involverer kontrol af Range 's nedre og øvre grænser, eller om en bestemt værdi er inden for et givet interval.

Lad os definere en simpel række af tegn ved at gøre følgende:

Range<String> range = Range.openClosed("a", "g");

og nu kan vi teste:

assertThat(range)
  .hasOpenedLowerBound()
  .isNotEmpty()
  .hasClosedUpperBound()
  .contains("b");

3.5. Tabel Påstande

AssertJ's tabelspecifikke påstande tillader kontrol af række- og kolonneantal og tilstedeværelsen af ​​en celleværdi.

Lad os lave en simpel tabel eksempel:

Table<Integer, String, String> table = HashBasedTable.create(2, 2);
table.put(1, "A", "PRESENT");
table.put(1, "B", "ABSENT");

og nu kan vi udføre følgende kontrol:

assertThat(table)
  .hasRowCount(1)
  .containsValues("ABSENT")
  .containsCell(1, "B", "ABSENT");

4. Konklusion

I denne artikel fra AssertJ-serien udforskede vi alle Guava-relaterede funktioner.

Implementeringen af ​​alle eksemplerne og kodestykkerne kan findes i et GitHub-projekt.

Næste » AssertJs Java 8-funktioner« ForrigeIntroduktion til AssertJ
Java tag