Я пытаюсь написать параметризованный тест для интерфейса Foo, который объявляет метод getFooEventInt (int, int). Я написал параметризованный тест, который работает для одного экземпляра Foo (объект FooImpl).
public class FooTest {
@ParameterizedTest
@MethodSource("getFooEvenIntProvider")
public void getFooEvenIntTest(int seed, int expectedResult) {
Foo foo = new FooImpl();
Assertions.assertEquals(expectedResult, foo.getFooEvenInt(seed));
}
private static Stream getFooEvenIntProvider() {
return Stream.of(
Arguments.of(-2, 0),
Arguments.of(-1, 0),
Arguments.of( 0, 2),
Arguments.of( 1, 2),
);
}
}
Тем не менее, я хотел бы иметь возможность вызывать getFooEvenIntTest (int, int) для предоставленного списка экземпляров реализации Foo, с каждой итерацией, а затем с использованием предоставленного списка значений seed /pectedResult.
Я понимаю, что могу сделать это как ...
public class FooTest {
@ParameterizedTest
@MethodSource("getFooProvider")
public void getFooImplEvenIntTest(Foo foo) {
int[] expectedResult = { 0, 0, 2, 2 };
int[] seed = { -2, -1, 0, 1 };
for(int i=0; i<seed.length; i++) {
Assertions.assertEquals(expectedResult[i],
foo.getFooEvenInt(seed[i]));
}
}
private static Stream getFooProvider() {
return Stream.of(
Arguments.of(new FooImpl()),
Arguments.of(new FooImpl2())
);
}
}
Есть идеи? Я опубликую, если выясню, но я подумал, что проверю, возможно ли это сделать, или есть другой подход.