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