关于JUnit 5文档的2.5.Assert一节中存在以下@Test
方法
@Test
void standardAssertions() {
assertEquals(2, calculator.add(1, 1));
assertEquals(4, calculator.multiply(2, 2),
"The optional failure message is now the last parameter");
assertTrue('a' < 'b', () -> "Assertion messages can be lazily evaluated -- "
+ "to avoid constructing complex messages unnecessarily.");
}
不清楚使用() -> "Assertion messages can be lazily evaluated -- ..."
而不仅仅是"Assertion messages can be lazily evaluated -- ..."
的优势是什么。这意味着:() -> ""
与""
因此:
assertTrue('a' < 'b', () -> "Assertion messages can be lazily evaluated -- "
+ "to avoid constructing complex messages unnecessarily.");
assertTrue('a' < 'b', "Assertion messages can be lazily evaluated -- "
+ "to avoid constructing complex messages unnecessarily.");
Assert消息可以被延迟求值是什么意思?
一些例子是赞赏。我想知道什么时候将是强制性的使用 * lambda * 方法。目前的官方文档没有明确涉及这一点
1条答案
按热度按时间eoxn13cs1#
考虑Assert消息的一部分来自数据库字段(或通过Web请求)的情况。如果没有延迟求值,即使Assert成功,数据库也会被查询。将消息文本创建隐藏在lambda后面,使您只有在真正需要时才有机会运行昂贵的代码。