小编Fdi*_*eal的帖子

使用Java 8 Lambdas的单元测试代码

我已经使用Java 8几个月了,我已经开始使用Lambda表达式,这在某些情况下非常方便.但是,我常常遇到一些问题,要对使用Lambda的代码进行单元测试.

以下面的伪代码为例:

private Bar bar;

public void method(int foo){
    bar.useLambda(baz -> baz.setFoo(foo));
}
Run Code Online (Sandbox Code Playgroud)

一种方法是仅仅验证条形码上的呼叫

verify(bar).useLambda(Matchers.<Consumer<Baz>>.any());
Run Code Online (Sandbox Code Playgroud)

但是,通过这样做,我不测试Lambda的代码.

另请注意,我无法使用方法替换Lambda并使用方法引用:

bar.useLambda(This::setFooOnBaz);
Run Code Online (Sandbox Code Playgroud)

因为我不会在那个方法上有foo.或者至少这是我的想法.

你以前遇到过这个问题吗?如何测试或重构我的代码以正确测试?


编辑

因为我编码的是单元测试,我不想实例化bar,而我将使用mock.所以我将无法验证baz.setFoo通话.

java lambda unit-testing java-8

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×1

java-8 ×1

lambda ×1

unit-testing ×1