方法的联合测试

junit test for a method

测试以 lambda 作为参数的方法可以通过传递 此方法的不同 lambda。例如,假设我们有 以下功能界面:

@FunctionalInterface
public interface Replacer<String> {
String replace(String s);
}

我们还假设我们有一个方法接受字符串的 lambda -> 字符串类型,如下:

public static List<String> replace(
List<String> list, Replacer<String> r) {
List<String> result = new ArrayList<>();
for (String s: list) {
result.add(r.replace(s));
}
return result;
}

现在,我如何使用两个 lambda 为该方法编写 JUnit 测试?

@Test
public void testReplacer() throws Exception {
List<String> names = Arrays.asList(
"Ann a 15", "Mir el 28", "D oru 33");
List<String> resultWs = replace(
names, (String s) -> s.replaceAll("\s", ""));
List<String> resultNr = replace(
names, (String s) -> s.replaceAll("\d", ""));
assertEquals(Arrays.asList(
"Anna15", "Mirel28", "Doru33"), resultWs);
assertEquals(Arrays.asList(
"Ann a ", "Mir el ", "D oru "), resultNr);
}