【发布时间】:2018-11-29 13:49:41
【问题描述】:
我正在尝试为返回 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());
}
甚至可以比较两个Functions 吗?您建议如何对这种方法进行单元测试?
【问题讨论】:
-
你想对它进行什么单元测试?例如:它没有异常地工作,它返回非空值,它返回一个当你传入 Y 时产生 X 的函数...?
-
我想测试它是否返回了正确的函数。
-
但是什么是“正确的功能”?当然,您可以测试它是否返回特定实例或特定类的实例,但您只是在复制您的实现。
-
返回的
Function取决于MyObject的某些成员,我想测试返回的Function是否与我期望的MyObject对象的函数相对应。 -
如果函数应该相同,您可以测试
assertTrue(expected == object.getFunction());,但如前所述,这似乎是一种循环(只需执行任何操作以获取expectedgetFunction本身?)。
标签: java unit-testing lambda java-8