25

groovyでtrueかfalseかに関係なく、値を表示するにはどうすればよいですか?IDEとしてEclipseを使用しています。

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

また、Groovyでの「アサート」についてもよくわかりません。Javaのif()ステートメント/ブール値のようなものですか?

Groovyで「アサート」はどのような役割を果たしますか?

4

3 に答える 3

50

アサーションはifに似ており、指定した式を検証します。式がtrueの場合、次のステートメントまで実行を続行し(何も出力しません)、式がfalseの場合、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 assert は非常に印象的です! 実際には、ステートメント内のすべての変数の値が出力されます (これはデバッグに最適です)。

たとえば、b が 5、a が {it^2}、c が 15 の場合、次のように出力されます。

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

(まあ--そのようなもの--Groovy の方が見栄えが良いでしょう)。

例外行でこの種の出力を取得できれば...

于 2012-10-23T21:31:23.863 に答える
0

assert 式の結果が true になることを 'asserts'

于 2012-09-28T19:44:49.160 に答える