В третьей части нашей серии статей об архитектуре JUnit 5 мы поговорим о правилах модели расширений. Приятного чтения.
6. Правила и модель расширений
Для того чтобы напрямую сравнить модель правил в JUnit 4 и модель расширений в JUnit 5, используем класс Calculator (Пример 1). Он используется для выполнения математических операций с целью проверки тестируемых систем. Нас интересует проверка методов, которые могут выдавать исключения. Одно из правил — ExpectedException. Его легко заменить на метод assertThrows в JUnit 5.
Логика, которая может выдавать исключения в классе Calculator, делает следующее:
-
Декларирует метод для вычисления квадратного корня числа (1). Если число отрицательное, создается и выдается исключение, содержащее соответствующее сообщение (2).
-
Декларирует метод для деления одного числа на другое (3). Если второе число ноль, то создается и выдается исключение, содержащее соответствующее сообщение (4).
В примере с JUnit 4 выше мы делаем следующее:
-
Декларируем поле ExpectedException с аннотацией @Rule. Аннотацию @Rule необходимо применить либо к общедоступному нестатичному полю, либо к общедоступному нестатичному методу (1). Фабричный метод ExpectedException.none() создает некофигурированное ExpectedException.
-
Инициализируем экземпляр класса Calculator, функциональность которого мы тестируем (2).
-
Метод ExpectedException настраивается на сохранение типа исключения (3) и сообщения (4), до выдачи ошибки посредством вызова метода sqrt в строке (5).
-
Метод ExpectedException настраивается на сохранение типа исключения (6) и сообщения (7), до выдачи ошибки посредством вызова метода divide в строке (8).
Продолжение