【发布时间】:2016-04-19 11:28:04
【问题描述】:
我正在使用 Supplier 实例化字段线程安全,同时避免连续调用同步方法。
class MyClass extends AbstractClassWithContext {
Supplier<Foo> fooGetter;
Foo foo;
public MyClass() {
this.fooGetter = this::initFoo;
}
Foo getFoo(){
return fooGetter.get();
}
synchonized Foo initFoo(){
if(Objects.isNull(this.foo)) {
this.foo = getContext().getFoo();
}
this.fooGetter = () -> this.foo;
return this.foo;
}
}
当我运行单元测试时,我想确保只调用一次 initFoo()。可悲的是 verify(classUnderTest, times(1)).initFoo() 没有注册 initFoo 被输入。我对此进行了调试,然后调用getFoo() 会依次进入initFoo。
有什么想法吗?
【问题讨论】:
标签: java-8 mockito verify functional-interface