[英]AssertThrows in JUNIT5
我正在尝试在junit5
学习assertThrows
,它将Executable
作为第二个参数,它有一个void execute()
方法。 但是,在下面的示例中,在相同的示例中,我们向它传递了一个LAMBDA
,该LAMBDA
返回一个 double 的方法double divide(int a , int b)
。 现在,如果下面的 lambda 没有与Excecutable
的execute
方法相同的签名,那么如何传递它。 它应该给出compile error
吗?
assertThrows(ArithmeticException.class,() -> m.divide(1, 0),"Failed");
() -> m.divide(1, 0)
被有效地对待
new Executable() {
@Override public void execute() {
m.divide(1, 0);
}
}
可以将 lambda 视为具有单个抽象方法的任何接口/类的实例。
Lambda 始终是多表达式,这意味着它们的确切类型取决于使用它们的上下文。
不存在兼容性问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.