Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
10 Июл 2023
2 мин
663

Проверка выброса исключения в JUnit 5

Когда разрабатываются тесты на Java с использованием фреймворка JUnit, часто возникает необходимость проверить, выбрасывает ли метод ожидаемое исключение.

Когда разрабатываются тесты на Java с использованием фреймворка JUnit, часто возникает необходимость проверить, выбрасывает ли метод ожидаемое исключение. Это важно для корректной работы программы.

Примером может быть случай, когда в тесте ожидается выброс исключения. Допустим, есть метод, который выполняет деление на ноль. В данной ситуации ожидается выброс исключения типа ArithmeticException.

public void divisionByZero() {
    int result = 10 / 0;
}

Существует несколько способов проверки выброса исключений в JUnit 5.

Использование assertThrows

JUnit 5 предоставляет удобный метод assertThrows(), который можно использовать для проверки исключений. Этот метод принимает два аргумента: класс ожидаемого исключения и исполняемый блок кода, в котором ожидается выброс исключения.

@Test
public void whenExceptionThrown_thenAssertionSucceeds() {
    Exception exception = assertThrows(ArithmeticException.class, () -> {
        int result = 10 / 0;
    });

    String expectedMessage = "/ by zero";
    String actualMessage = exception.getMessage();

    assertTrue(actualMessage.contains(expectedMessage));
}

В данном случае сначала проверяется, что метод действительно выбрасывает исключение типа ArithmeticException. Затем проверяется, что сообщение исключения содержит ожидаемую строку.

Использование ExpectedException Rule

В предыдущих версиях JUnit (до JUnit 5) для проверки выброса исключений использовался механизм правил (@Rule). Однако в JUnit 5 этот подход устарел и заменен на использование assertThrows.

@Rule
public ExpectedException exceptionRule = ExpectedException.none();

@Test
public void whenExceptionThrown_thenRuleIsApplied() {
    exceptionRule.expect(ArithmeticException.class);
    exceptionRule.expectMessage("/ by zero");
    int result = 10 / 0;
}

В данном случае сначала устанавливается ожидание, что будет выброшено исключение типа ArithmeticException с определенным сообщением, а затем выполняется блок кода, в котором ожидается выброс исключения.

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

Добавить комментарий

Подарок
Забрать подарок