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

And*_*rey 9 java lambda unit-testing java-8

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

class MyObject<X> {
     public Function<X,Obj> getFunction() {...}
 }
Run Code Online (Sandbox Code Playgroud)

在我的单元测试中,我创建了一个示例对象并调用,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());
}
Run Code Online (Sandbox Code Playgroud)

甚至可以比较两个Functions?您如何建议对此方法进行单元测试?

Kar*_*cki 9

使用标准R Function.apply(T t)方法检查函数行为:

Function<St,Obj> func = o.getFunction();
assertEquals(func.apply(value), expectedFunctionResult);
Run Code Online (Sandbox Code Playgroud)

  • @ AndreaRendl-Pitrey这对于常规方法的单元测试并没有什么不同:你传入一些已知的输入,你检查输出是你所期望的.您可以选择这些输入,以便测试显着的行为,例如边界. (8认同)