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

Модульное тестирование с помощью JUnit 5

Модульное тестирование – это вид тестирования программного обеспечения, при котором мы тестируем отдельные компоненты программного обеспечения. Это дон… С тегами java, тестирование, учебник, для начинающих.

Модульное тестирование – это вид тестирования программного обеспечения, при котором мы тестируем отдельные компоненты программного обеспечения. Это делается во время разработки приложения разработчиками. Он изолирует раздел кода и проверяет его правильность. Единицей может быть отдельная функция, метод, процедура, модуль или объект.

Ну вот несколько преимуществ модульного тестирования.

  • Если модульные тесты хорошо написаны, то с каждой сборкой нашего программного обеспечения с измененным кодом мы можем заметить любые сбои при внедрении новых функций.
  • Это делает ваш код более многоразовым, так как для хороших модульных тестов компоненты кода должны быть модульными.
  • Он действует как документация, поскольку описывает ожидаемое поведение части кода для других разработчиков.

Теперь, когда мы определили модульное тестирование и почему мы его используем, мы готовы перейти к JUnit 5.

JUnit – одна из самых популярных платформ модульного тестирования на Java. JUnit 5 состоит из нескольких различных модулей из трех различных подпроектов, а именно платформы JUnit, JUnit Vintage, JUnit Jupiter.

Установить JUnit 5

Для Maven добавьте зависимость в Pom.xml:


    org.junit.jupiter
    junit-jupiter-api
    {$version}
    test

Для Gradle добавьте в build.gradle:

testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '$version'

Аннотации JUnit

Аннотации – это мета-теги, которые предоставляют дополнительную информацию о методах и классах, определенных в нашей структуре кода.

Здесь перечислены некоторые часто используемые аннотации.

  • @Test – Представляет метод тестирования.
  • @beforeEach – Представляет аннотированный метод, который должен выполняться перед каждым методом тестирования.
  • @afterEach – Представляет аннотированный метод, который должен выполняться после каждого метода тестирования.
  • @beforeAll – Представляет аннотированный метод, который должен выполняться перед всеми методами тестирования.
  • @AFTERALL – Представляет аннотированный метод, который должен быть выполнен после всех методов тестирования.
  • @DisplayName – Создает пользовательское отображаемое имя для тестового класса или метода.
  • @Tag – Создает теги для фильтрации тестов.
  • @Extendwith – Регистрирует пользовательские расширения.
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class JUnit5Tests {

    @BeforeAll
    static void beforeAllTest() {
        log.info("Executed before all test methods.");
    }

    @BeforeEach
    void beforeEachTest() {
        log.info("Executed before each test method.");
    }

    @Test
    void test() {
        log.info("Executed test method.");
    }

    @AfterEach
    void afterEachTest() {
         log.info("Executed after all test methods");
    }

    @AfterAll
    static void afterAllTest() {
         log.info("Executed after all test methods");
    }
}

Утверждения JUnit

Каждый метод тестирования должен быть оценен на соответствие условию true с использованием утверждений, чтобы тест мог продолжать выполняться. Утверждения JUnit Jupiter хранятся в org.junit.jupiter.api. Утверждения класс.

Здесь вот некоторые часто используемые утверждения.

  • assertNull(фактическое значение) – Сбой, если фактическое значение не равно нулю.
  • assertNotNull(фактическое значение) – Сбой, когда фактическое значение равно нулю.
  • assertEquals(ожидаемое значение, фактическое значение) – Сбой, когда ожидаемое значение не равно фактическому значению.
  • assert All() – Группирует кучу утверждений, и каждое утверждение выполняется, даже если одно или несколько из них завершается неудачей.
  • assertTrue(значение выражения) – Завершается ошибкой, если выражение неверно.
  • assertFalse(значение выражения) – Сбой, если выражение не является ложным.
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;

import example.io.util.Customer;

class JUnit5Tests {

    private final Customer customer = new Customer("Ann", "Marie");

    @Test
    void standardAssertions() {
        assertEquals("Marie", customer.getLastName());
        assertNotNull(customer);
        assertTrue("Ann", customer.getFirstName());
    }

    @Test
    void groupedAssertions() {
        assertAll("customer",
         () -> assertEquals("Ann", customer.getFirstName()),
         () -> assertEquals("Marie", customer.getLastName())
        );
    }
}

Предположения JUnit5

Предположения – это статические методы, присутствующие внутри org.junit.jupiter.api. Предположения класс. Эти методы будут выполнять тест только при выполнении указанного условия, в противном случае тест будет прерван. Прерванный тест не приведет к сбою сборки. Предположения также понимают лямбда-выражения.

Здесь вот некоторые часто используемые предположения.

  • предположим, что True() – Выполнить тело, когда будет пропущен положительный тест удержания условия.
  • предположим, что False() – Выполнить тело, когда будет пропущен тест с отрицательным условием удержания, иначе.
  • предполагая, что() – Часть метода тестирования будет выполняться, если предположение верно, и все последующее будет выполняться независимо от предположения в предположении, что() выполняется.
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.junit.jupiter.api.Assumptions.assumingThat;

import example.util.Calculator;

import org.junit.jupiter.api.Test;

class JUnit5Tests {

    private final Calculator calculator = new Calculator();

    @Test
    void simpleAssumeTest() {
        assumeTrue("DEV".equals(System.getenv("ENV")),
            () -> "Aborting test");
    }

    @Test
    void complexAssumeTest() {
        assumingThat("CI".equals(System.getenv("ENV")),
            () -> {
                assertEquals(21, calculator.add(14, 7));
            });
     }
}

Дальнейшее Чтение

Мы рассмотрели JUnit 5 и некоторые его функции с некоторыми примерами. Мы также рассмотрели, как мы можем использовать аннотации, утверждения, предположения JUnit.

Спасибо за чтение. Счастливого Обучения. ❤ ️

Оригинал: “https://dev.to/anisha/unit-testing-with-junit5-3mhb”