Учебники

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

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

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

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

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

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

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

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

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

Следующий код показывает пример для параметризованного теста. Тестирует метод sum () класса Арифметика:

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

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

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

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

Код Объяснение

  • Строка кода 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 переменные

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

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

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

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

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

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

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

{1,2,3}

Вот

firstNumber = 1

= 2 второе число

expectedResult = 3

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

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

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

Объяснение кода:

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

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

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

Объяснение кода:

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

Вывод:

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

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

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

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

Резюме :

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

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

  • @Бежать с
  • @Parameters