JUnit 5:“Assert消息可以被延迟求值”是什么意思?

cmssoen2  于 2023-02-08  发布在  其他
关注(0)|答案(1)|浏览(129)

关于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 * 方法。目前的官方文档没有明确涉及这一点

eoxn13cs

eoxn13cs1#

考虑Assert消息的一部分来自数据库字段(或通过Web请求)的情况。如果没有延迟求值,即使Assert成功,数据库也会被查询。将消息文本创建隐藏在lambda后面,使您只有在真正需要时才有机会运行昂贵的代码。

相关问题