25

如何在groovy中显示一个值是真还是假?我使用 Eclipse 作为我的 IDE。

    assert 4 * ( 2 + 3 ) - 6 == 14 //integers only

而且我不太了解 Groovy 中的“断言”。它像 Java 中的 if() 语句/布尔值吗?

“断言”在 Groovy 中扮演什么角色?

4

3 回答 3

50

断言类似于 if,它验证您提供的表达式:如果表达式为真,则继续执行到下一条语句(并且不打印任何内容),如果表达式为假,则引发 AssertionError。

您可以自定义错误消息,提供由冒号分隔的消息,如下所示:

assert 4 * ( 2 + 3 ) - 5 == 14 : "test failed"

这将打印:

java.lang.AssertionError: test failed. Expression: (((4 * (2 + 3)) - 5) == 14)

但我不得不改变你的测试值,以使其失败。

断言的使用取决于您的口味:您可以使用它们来断言在您的工作继续之前必须为真的东西(请参阅按合同设计)。

例如,一个需要正数才能使用的函数,可以测试参数是否为正的事实,并将断言作为第一个语句:

def someFunction(n) {
    assert n > 0 : "someFunction() wants a positive number you provided $n"
    ...
    ...function logic...
}
于 2012-09-29T10:13:44.803 回答
12

Groovy 断言现在非常令人印象深刻!他们实际上会打印出语句中每个变量的值(这对于调试来说非常棒)

例如,如果 b 为 5,a 为 {it^2} 且 c 为 15,它可能会打印如下内容:

assert( a(b)  == c)
.       | |   |  |
.      25 |  !=  15
.         5

(嗯 - 类似的东西 - Groovy 可能会看起来好多了)。

如果我们能在异常行上得到这种打印输出......

于 2012-10-23T21:31:23.863 回答
0

断言“断言”表达式的结果将为真

于 2012-09-28T19:44:49.160 回答