Java8函数式编程入门 互动版

测试Lambda表达式

在编写单元测试时,怎么在应用中调用该方法,就怎么在测试中调用,给定一些输入,调用方法,然后验证结果是否和预期的行为一致。Lambda表达式给单元测试带来了一些麻烦,lambda表达式没有名字,无法直接在测试代码中调用。

例子,将字符串转换成大写:

public List<String> allToUpperCase(List<String> words) {
    return words.stream()
            .map(word->word.toUpperCase())
            .collect(Collectors.toList());
}

这段代码,Lambda表达式唯一的作用就是调用一个Java方法。将该Lambda表达式单独测试是不值得的,它的行为太简单。 应该讲重点放在方法的行为上。

public void change() {
    List<String> words = Arrays.asList("a","b","c");
    List<String> res = allToUpperCase(words);
    //...
}

public List<String> allToUpperCase(List<String> words) {
    return words.stream()
            .map(word->word.toUpperCase())
            .collect(Collectors.toList());
}