【发布时间】:2015-08-29 08:55:40
【问题描述】:
我有以下带有 lambda 函数的代码:
obj.method(param, () -> {
//code here
})
如何通过测试 lambda 函数中的代码来覆盖?
【问题讨论】:
-
这完全取决于
obj.method()用它做什么。如果它立即调用它,那么只需调用调用obj.method()的方法。如果它保存以供以后使用,请确保稍后的操作由您的测试执行。 -
你能分享一个更完整的sn-p吗?
-
我倾向于将非平凡的 lambda 函数转换为方法,并简单地使用方法引用。这样,您既保留了 lambda 提供的优势 - 传递回调的简洁代码 - 也保留了方法提供的优势 - 作为单独的单元的可见性。
-
不测试私有方法的建议在这里不适用吗?测试您期望从使用此 lambda 的公共方法中获得的行为,如果您稍后重构,您会省去头疼的问题。
标签: java lambda code-coverage