JUnit Параметризованный тест с примером использования @Parameters

Что такое параметризованный тест в Junit?

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

Используя параметризованный тест, можно настроить метод тестирования, который извлекает данные из некоторого источника данных.

Рассмотрим простой тест на суммирование разных чисел. Код может выглядеть так:

Параметризованный тест в Junit

Описанный выше подход приводит к большому количеству избыточности.

Нам нужен простой подход и. Используя параметризованный тест, вы можете просто добавить метод для ввода 10 входных данных, и ваш тест будет автоматически запускаться 10 раз.

Шаги по созданию параметризованного JUnit тестXNUMX

В следующем коде показан пример параметризованного теста. Он тестирует метод sum() класса Arithmetic:

Шаг 1) Создайте класс. В этом примере мы собираемся ввести два числа, используя метод sum (int,int), который вернет сумму заданных чисел.

Шаги по созданию параметризованного JUnit Тест

Шаг 2) Создайте параметризованный тестовый класс

Шаги по созданию параметризованного JUnit Тест

Код Пояснение

  • Строка кода 11: Аннотируйте свой тестовый класс, используя @runWith(Parameterized.class).
  • Строка кода 13: Объявление переменной firstNumber как частной и ее типа int.
  • Строка кода 14: Объявление переменной SecondNumber как частной и ее тип int.
  • Строка кода 15: Объявление переменной «expectedResult» как частной и типа int.
  • Строка кода 16: Объявление переменной airthematic как частной и типа Airthematic.

@Бежать с(имя_класса.класс): @Бежать с аннотация используется для указания имени класса бегуна. Если мы не укажем какой-либо тип в качестве параметра, среда выполнения выберет БлокJunit4ClassRunner по умолчанию.

Этот класс отвечает за запуск тестов с новым экземпляром теста. Он отвечает за вызов JUnit методы жизненного цикла, такие как установка (связывание ресурсов) и демонтаж (освобождение ресурсов).

Для параметризации вам необходимо аннотировать с помощью @RunWith и передать необходимый .class для тестирования.

Шаг 3) Создайте конструктор, в котором хранятся тестовые данные. Он хранит 3 переменные

Шаги по созданию параметризованного JUnit Тест

Шаг 4) Создайте статический метод, который генерирует и возвращает тестовые данные.

Шаги по созданию параметризованного JUnit Тест

Строка кода 32,33: Создание двумерного массива (предоставление входных параметров для сложения). Используя метод asList, мы преобразуем данные в тип списка. Поскольку тип возвращаемого значения метода — коллекция.

Строка кода 30: . @ Параметры аннотация для создания набора входных данных для запуска нашего теста.

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

Рассмотрим элемент

1,2,3 {}

Здесь

первый номер = 1

второй номер = 2

ожидаемый результат = 3

Здесь каждый элемент массива будет передаваться конструктору по одному, поскольку экземпляр класса создается несколько раз.

Шаг 5) Полный код

Шаги по созданию параметризованного JUnit Тест

Пояснение к коду:

  • Строка кода 25: Использование аннотации @Before для настройки ресурсов (Airthematic.class здесь). Аннотация @Before используется здесь для запуска перед каждым тестовым примером. Он содержит предварительные условия теста.
  • Строка кода 36: Использование аннотации @Test для создания нашего теста.
  • Строка кода 39: Создание оператора утверждения, чтобы проверить, эквивалентна ли наша сумма ожидаемой.

Шаг 6) Создайте класс запуска тестов для запуска параметризованного теста:

Шаги по созданию параметризованного JUnit Тест

Пояснение к коду:

  • Строка кода 8: Объявление основного метода теста класса, который будет запускать наш JUnit тест.
  • Строка кода 9: При выполнении тестовых случаев с использованием JunitCore.runclasses имя тестового класса принимается в качестве параметра (в нашем примере мы используем Airthematic.class).
  • Строка кода 11: Обработка результата с использованием цикла for и распечатка неудачного результата.
  • Строка кода 13: Распечатка успешного результата.

Вывод:

Вот выходные данные, показывающие успешный тест без следов сбоев, как показано ниже:

Шаги по созданию параметризованного JUnit Тест

Посмотрите результат на консоли, который показывает сложение двух чисел: -

JUnit Параметризованный тест

Итого

Параметризованный тест позволяет разработчику выполнять один и тот же тест снова и снова, используя разные значения.

Важные аннотации, которые будут использоваться во время параметризации

  • @Бежать с
  • @ Параметры