我想尽一切办法让这个 lambda 方法得到 100% 的覆盖率,但无论我做什么我都不明白。
private String createMessage(List<FieldError> erros) {
return erros.stream().collect(Collectors.toMap(FieldError::getField, FieldError::getDefaultMessage, (keyOld, keyNew) -> keyOld)).toString();
}
答案 0 :(得分:1)
未覆盖的代码是 lambda 表达式的实现。您只有一个 lambda 表达式 (keyOld, keyNew) -> keyOld
,这意味着该代码不会被执行。
lambda 表达式是 Collectors.toMap()
的第三个参数,即 BinaryOperator<U> mergeFunction
,它被记录为 “一个合并函数,用于解决与相同键关联的值之间的冲突”.
如果数据中没有冲突,则不会执行 lambda 表达式,因此请确保使用 erros
列表包含 2 个或更多具有相同 {{1} 元素的数据测试代码} 值。