Параметризованный тест JUnit с различными параметрами
Рассмотрим параметризованный тест JUnit. JUnit предоставляет способ параметризации такого теста с использованием статического метода:
@Parameterized.Parameters
public static Collection<Object[]> parameters(){
Object[][] data = new Object[][] { { 1, 11 }, { 2, 22 }, { 3, 33 }, { 4, 44 } };
return Arrays.asList(data);
}
Однако это не то, что мне нужно, потому что я не знаю параметров самого тестового класса. Тестовый класс должен быть просто тестовым классом, который можно параметризировать с помощью набора параметров. Я не хочу указывать такие параметры внутри самого класса. Учтите, у меня много таких классов в тестовом наборе.
То, что я хочу, - это параметризовать весь набор тестов из внешнего кода. То есть, есть некоторый другой код, который создает пакет с определенным набором параметров. Сам набор не знает параметров, с которыми он будет параметризован.
Например, у меня есть набор тестов X
состоящий из тестовых классов A
, B
, а также C
, Все эти классы принимают, например, String и целое число в своем конструкторе в качестве своих параметров. Теперь я хочу, чтобы иметь возможность воплощать X
внешне (например, в другом тестовом наборе) с определенной строкой s
и инт i
так что это будет воплощать A
B
а также C
с помощью s
а также i
в их конструкторах.
Как этого достичь?
1 ответ
Я использую пакет JUnitParams, который добавляет больше возможностей для параметризации тестов. Одна из этих способностей - указать отдельный класс, который предоставляет параметры. Посмотрите на ссылку, они приводят много примеров, один из которых использует внешний класс.