编写一个JUnit 5参数化测试,需要使用Arguments.of()向测试传递函数,但是有2个编译错误,我不知道如何解决。希望得到任何帮助。
public static Stream<Arguments> some() {
return Stream.of(Arguments.of(true, String::length));
}
@ParameterizedTest
@MethodSource
public <T> void some(final T input, final Function<String, Integer> length) {
}
下面的工作符合预期。
public void sample() {
some(true, String::length);
}
函数需要封装在一个类中。
public static class P {
private final Function<String, Integer> mFunction;
public P(final Function<String, Integer> function) {
mFunction = function;
}
public Function<String, Integer> function() {
return mFunction;
}
}
public static Stream<Arguments> some() {
return Stream.of(Arguments.of(3, "abc", new P(String::length)));
}
@ParameterizedTest
@MethodSource
public <T> void some(final int expect, final String input, final P p) {
assertEquals(expect, p.function().apply(input));
}