我已經使用Java 8幾個月了,而且我已經開始使用Lambda表達式,這對於某些情況非常方便。但是,我經常遇到一些問題,以便對使用Lambda的代碼進行單元測試。使用Java 8的單元測試代碼Lambdas
以一個例子下面的僞代碼:
private Bar bar;
public void method(int foo){
bar.useLambda(baz -> baz.setFoo(foo));
}
一種方法是隻覈實條通話
verify(bar).useLambda(Matchers.<Consumer<Baz>>.any());
但是,通過這樣做,我不考Lambda的代碼。
另外請注意,我不能用的方法和使用方法引用來代替LAMBDA:
bar.useLambda(This::setFooOnBaz);
因爲我不會對這種方法foo的。 或者至少這是我的想法。
你有過這個問題嗎?我如何測試或重構我的代碼以正確測試它?
編輯
由於我所編碼是一種單元測試,我不希望實例吧,我將使用一個模擬代替。所以我將無法驗證baz.setFoo
呼叫。
當你說我的實際lambda比一組更復雜時,你是對的,但它仍然很簡單,可以認爲它不會中斷。畢竟,也許我只是試圖單元測試100%的代碼,這是根本問題。謝謝! – Fdiazreal 2015-02-24 10:55:11