JUnit Параметризованный тест с примером использования @Parameters
Что такое параметризованный тест в Junit?
Параметризованный тест заключается в многократном выполнении одного и того же теста с использованием разных значений. Это помогает разработчику сэкономить время при выполнении одного и того же теста, который отличается только входными данными и ожидаемыми результатами.
Используя параметризованный тест, можно настроить метод тестирования, который извлекает данные из некоторого источника данных.
Рассмотрим простой тест на суммирование разных чисел. Код может выглядеть так:
Описанный выше подход приводит к большому количеству избыточности.
Нам нужен простой подход и. Используя параметризованный тест, вы можете просто добавить метод для ввода 10 входных данных, и ваш тест будет автоматически запускаться 10 раз.
Шаги по созданию параметризованного JUnit тестXNUMX
В следующем коде показан пример параметризованного теста. Он тестирует метод sum() класса Arithmetic:
Шаг 1) Создайте класс. В этом примере мы собираемся ввести два числа, используя метод sum (int,int), который вернет сумму заданных чисел.
Шаг 2) Создайте параметризованный тестовый класс
Код Пояснение
- Строка кода 11: Аннотируйте свой тестовый класс, используя @runWith(Parameterized.class).
- Строка кода 13: Объявление переменной firstNumber как частной и ее типа int.
- Строка кода 14: Объявление переменной SecondNumber как частной и ее тип int.
- Строка кода 15: Объявление переменной «expectedResult» как частной и типа int.
- Строка кода 16: Объявление переменной airthematic как частной и типа Airthematic.
@Бежать с(имя_класса.класс): @Бежать с аннотация используется для указания имени класса бегуна. Если мы не укажем какой-либо тип в качестве параметра, среда выполнения выберет БлокJunit4ClassRunner по умолчанию.
Этот класс отвечает за запуск тестов с новым экземпляром теста. Он отвечает за вызов JUnit методы жизненного цикла, такие как установка (связывание ресурсов) и демонтаж (освобождение ресурсов).
Для параметризации вам необходимо аннотировать с помощью @RunWith и передать необходимый .class для тестирования.
Шаг 3) Создайте конструктор, в котором хранятся тестовые данные. Он хранит 3 переменные
Шаг 4) Создайте статический метод, который генерирует и возвращает тестовые данные.
Строка кода 32,33: Создание двумерного массива (предоставление входных параметров для сложения). Используя метод asList, мы преобразуем данные в тип списка. Поскольку тип возвращаемого значения метода — коллекция.
Строка кода 30: . @ Параметры аннотация для создания набора входных данных для запуска нашего теста.
Статический метод, определенный аннотацией @Parameters, возвращает коллекцию, где каждая запись в коллекции будет входными данными для одной итерации теста.
Рассмотрим элемент
1,2,3 {}
Здесь
первый номер = 1
второй номер = 2
ожидаемый результат = 3
Здесь каждый элемент массива будет передаваться конструктору по одному, поскольку экземпляр класса создается несколько раз.
Шаг 5) Полный код
Пояснение к коду:
- Строка кода 25: Использование аннотации @Before для настройки ресурсов (Airthematic.class здесь). Аннотация @Before используется здесь для запуска перед каждым тестовым примером. Он содержит предварительные условия теста.
- Строка кода 36: Использование аннотации @Test для создания нашего теста.
- Строка кода 39: Создание оператора утверждения, чтобы проверить, эквивалентна ли наша сумма ожидаемой.
Шаг 6) Создайте класс запуска тестов для запуска параметризованного теста:
Пояснение к коду:
- Строка кода 8: Объявление основного метода теста класса, который будет запускать наш JUnit тест.
- Строка кода 9: При выполнении тестовых случаев с использованием JunitCore.runclasses имя тестового класса принимается в качестве параметра (в нашем примере мы используем Airthematic.class).
- Строка кода 11: Обработка результата с использованием цикла for и распечатка неудачного результата.
- Строка кода 13: Распечатка успешного результата.
Вывод:
Вот выходные данные, показывающие успешный тест без следов сбоев, как показано ниже:
Посмотрите результат на консоли, который показывает сложение двух чисел: -
Итого
Параметризованный тест позволяет разработчику выполнять один и тот же тест снова и снова, используя разные значения.
Важные аннотации, которые будут использоваться во время параметризации
- @Бежать с
- @ Параметры