Samstag, August 15, 2020

AssertJ und java.util.List

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

AssertJ und java.util.List

AssertJ hat eine praktische Möglichkeit, Listen in JUnit Tests abzuprüfen. Insbesondere, wenn in der Liste komplexe Objekte abgelegt sind, s...