Параметризированные тесты в JUnit. Использование @Parameterized.Parameters
Запуск параметризированных тестов с помощью аннотаций @Parameterized.Parameters и @RunWith.
Основной код описан в JUnit — введение в юнит-тесты. Пример JUnit Hello world.
Ниже описан парамeтризированный тест в JUnit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package ru.javastudy.junit; import java.util.Arrays; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import static org.junit.Assert.assertEquals; /** * Created for JavaStudy.ru */ @RunWith(Parameterized.class) public class ParameterizeTest { private int valueA; private int valueB; private int expected; public ParameterizeTest(int valueA, int valueB, int expected) { this.valueA = valueA; this.valueB = valueB; this.expected = expected; } @Parameterized.Parameters(name = "{index}:sumOf({0}+{1})={2}") public static Iterable<Object[]> dataForTest() { return Arrays.asList(new Object[][]{ {1, 1, 2}, {2, 6, 8}, {18, 2, 20}, {13, 15, 28}, {1, 5, 6} }); } @Test public void paramTest() { assertEquals(expected, new Calculator().getSum(valueA,valueB)); } } |
В начале мы задаем три поля класса: два значения и ожидаемый результат. Далее необходимо задать конструктор, в котором будут инициализированы эти переменные.
С помощью записи @Parameterized.Parameters(name = «{index}:sumOf({0}+{1})={2}») мы задаем параметры для нашего метода, где {index} — индекс теста (1,2,3,4 и т.д.), {0}, {1} и {2} это valueA, valueB и expected соответственно. Запись sumOf — поясняющий текст к происходящему. Метод Calculator.getSum() описан в начальной статье — он просто складывает два числа.
После запуска мы получим результат прохождения тестов для каждого набора значений из массива.