Рубрики
Без рубрики

JUnit 5 + примеры AssertJ

– JUnit 5 + примеры AssertJ

Автор оригинала: mkyong.

В этой статье мы покажем вам, как писать тестовые утверждения с помощью AssertJ .

P.S Протестировано с JUnit 5.5.2 и AssertJ 3.14.0

	
		org.junit.jupiter
		junit-jupiter-engine
		5.5.2
		test
	
		
	
		org.assertj
		assertj-core
		3.14.0
		test
	

1. JUnit 5 утверждений для утверждения

Легко преобразовать утверждения JUnit 5 в активы, см. Следующий синтаксис:

assertEquals(expected, actual);

assertEquals(expected, actual, "assertion desc");
assertThat(actual).isEqualTo(expected);

assertThat(actual).as("assertion desc").isEqualTo(expected);

2. Утверждение J

2.1 Некоторые типичные тестовые утверждения с AssertJ – Строкой , Список , Карта и Исключение .

package com.mkyong.assertions.assertj;

import org.assertj.core.api.InstanceOfAssertFactories;
import org.assertj.core.data.Index;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static org.assertj.core.api.Assertions.as;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;

public class AssertjTest {

    // assert string
    @Test
    void test_string_ok() {

        String name = "I am Mkyong!";

        assertThat(name)
                .as("if failed display this msg!")
                .isEqualTo("I am Mkyong!")
                .isEqualToIgnoringCase("I AM mkyong!")
                .startsWith("I")
                .endsWith("!")
                .containsIgnoringCase("mkyong");

    }

    // assert list
    @Test
    void test_list_ok() {

        List list = Arrays.asList("Java", "Rust", "Clojure");

        assertThat(list)
                .hasSize(3)
                .contains("Java", "Clojure")
                .contains("Java", Index.atIndex(0))
                .contains("Rust", Index.atIndex(1))
                .contains("Clojure", Index.atIndex(2))
                .doesNotContain("Node JS");

    }

    // assert map
    @Test
    void test_map_ok() {

        Map map = new HashMap<>();
        map.put("name", "mkyong");

        assertThat(map)
                .hasSize(1)
                .extractingByKey("name", as(InstanceOfAssertFactories.STRING))
                .isEqualToIgnoringCase("mkyong")
                .startsWith("mkyong");

        assertThat(map).extracting("name")
                .isEqualTo("mkyong");

        Map map2 = new HashMap<>();
        map2.put("number", 999);

        assertThat(map2)
                .hasSize(1)
                .extractingByKey("number", as(InstanceOfAssertFactories.INTEGER))
                .isEqualTo(999);

    }


    // assert exception
    @Test
    void test_exception_ok() {

        assertThatThrownBy(() -> divide(1, 0))
                .isInstanceOf(ArithmeticException.class)
                .hasMessageContaining("zero")
                .hasMessage("/ by zero");

        assertThatThrownBy(() -> {
            List list = Arrays.asList("one", "two");
            list.get(2);
        })
                .isInstanceOf(IndexOutOfBoundsException.class)
                .hasMessageContaining("Index 2 out of bounds");

    }

    int divide(int input, int divide) {
        return input / divide;
    }

}

Скачать Исходный Код

Оригинал: “https://mkyong.com/junit5/junit-5-assertj-examples/”