AssertJ hat eine praktische Möglichkeit, Listen in JUnit Tests abzuprüfen. Insbesondere, wenn in der Liste komplexe Objekte abgelegt sind, spielt es seine Stärke aus.
Über die Methode
#extracting(...)
werden die Eigenschaften angegeben, die aus dem Objekt per getter ausgelesen werden sollen. Die ausgelesenen Eigenschaften werden
über
#tuple(...)
miteinander verglichen.
Das ist dann praktisch, wenn nicht, wie in diesem Beispiel, die Objekte als Instanzen zur Verfügung stehen.
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;
import java.util.List;
import org.junit.jupiter.api.Test;
/**
* Some examples to test a list.
*
* @author Andre Winkler
*/
class ListAssert {
@Test
public void assertJdemo() {
final Person a = Person.of("Winkler", "Andre");
final Person b = Person.of("Winkler", "Adam");
final Person c = Person.of("Winkler", "Lars");
final Person d = Person.of("Winkler", "Erwin");
final List list = List.of(a, b, c, d);
assertThat(list).extracting("name", "firstName")
.contains(
tuple("Winkler", "Andre"),
tuple("Winkler", "Adam"),
tuple("Winkler", "Lars"),
tuple("Winkler", "Erwin"));
}
private static class Person {
private final String name;
private final String firstName;
private Person(String name, String firstName) {
this.name = name;
this.firstName = firstName;
}
public static Person of(String name, String firstName) {
return new Person(name, firstName);
}
public String getName() {
return name;
}
public String getFirstName() {
return firstName;
}
}
}
Links
Keine Kommentare:
Kommentar veröffentlichen