Я использую 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());
Но, делая это, я не испытываю Код Лямбды.
Также обратите внимание, что я не в состоянии заменить лямбда со ссылкой метод и использование метода:
bar.useLambda(This::setFooOnBaz);
Потому что я не буду иметь Foo на этом методе. Или, по крайней мере, это то, что я думаю.
У вас была эта проблема раньше? Как я могу проверить или реорганизовать свой код, чтобы проверить его правильно?
Редактировать
Так что я кодирование тест блока, я не хочу, чтобы создать экземпляр бара, и я буду использовать макет вместо этого. Поэтому я не могу просто подтвердить звонок baz.setFoo
.
Вы были правы, когда сказали, что моя настоящая лямбда немного сложнее, чем набор, но все же достаточно просто считать, что она не сломается. В конце концов, возможно, я просто пытаюсь выполнить тестирование на 100% кода, и это основная проблема. Благодаря! – Fdiazreal