Java 8:对返回Function对象的方法进行单元测试

时间:2018-11-29 13:49:42

标签: java unit-testing lambda java-8

我正在尝试为返回Function的方法编写Java 8单元测试;像这样:

class MyObject<X> {
     public Function<X,Obj> getFunction() {...}
 }

在单元测试中,我创建了一个示例对象并调用getFunction(),并希望将其与不适用于org.junit.Assert.assertEquals的预期函数进行比较:

@Test
public void getFunction_returnsFunction() {
   final MyObject<St> object = new MyObject<>(..);
   final Function<St,Obj> expectedResult = ...;

   // this does not work
   assertEquals(expectedResult, object.getFunction());
}

是否甚至可以比较两个Function?您将如何建议对该方法进行单元测试?

1 个答案:

答案 0 :(得分:9)

使用标准的R Function.apply(T t)方法检查功能行为:

Function<St,Obj> func = o.getFunction();
assertEquals(func.apply(value), expectedFunctionResult);