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