测试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());
}