Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
09 Авг 2023
2 мин
275

Проверка сообщения об исключении с помощью аннотации JUnit Test

В разработке программного обеспечения на Java с использованием JUnit для написания тестов, иногда возникает необходимость проверить не только тип исключения,

В разработке программного обеспечения на Java с использованием JUnit для написания тестов, иногда возникает необходимость проверить не только тип исключения, которое было вызвано, но и сообщение об исключении. Особенно это актуально, когда сообщение об исключении содержит важную информацию, которая помогает понять, что именно пошло не так.

Предположим, есть метод, который бросает исключение с определенным сообщением. Например:

public void checkEmployeeId(String id) {
    if (id == null) {
        throw new RuntimeException("Employee ID is null");
    }
    // some more code
}

И хотелось бы проверить в JUnit тесте не только то, что метод бросает исключение RuntimeException, но и то, что сообщение об исключении точно равно «Employee ID is null».

В JUnit 4 существует аннотация @Test, которую можно использовать для указания ожидаемого исключения. Например:

@Test(expected = RuntimeException.class)
public void testCheckEmployeeId() {
    checkEmployeeId(null);
}

Однако проблема в том, что этот способ не позволяет проверять сообщение об исключении.

В JUnit 5 введена новая концепция assertThrows, которая позволяет не только проверять тип исключения, но и проверять сообщение об исключении. Вот как можно использовать assertThrows для проверки сообщения об исключении:

@Test
public void testCheckEmployeeId() {
    Exception exception = assertThrows(RuntimeException.class, () -> {
        checkEmployeeId(null);
    });

    String expectedMessage = "Employee ID is null";
    String actualMessage = exception.getMessage();

    assertTrue(actualMessage.contains(expectedMessage));
}

В этом примере assertThrows принимает в качестве аргументов класс исключения и исполняемый блок кода (в виде лямбда-выражения). Итак, assertThrows выполняет переданный блок кода и проверяет, что он бросает исключение указанного типа. Если это так, то assertThrows возвращает это исключение, и далее можно проверить его сообщение.

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

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

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