GroovyのテスティングフレームワークSpock Frameworkではthenの部分に合格条件を記述するが、一行で一つのbooleanを表現する必要がある。
JUnitのようにテストケース内に何を書いても良いフレームワークに慣れていると、どう書いていいかわからなかったりする。
リストに条件を満たす要素が1つ以上存在する
list.any { 条件 }
または
list.find { 条件 } != null
リストに条件を満たす要素が1つもない
!list.any { 条件 }
または
list.find { 条件 } == null
リストAの各要素のxの値はリストBに含まれる値のみである
listA.every { it.x in listB }
リストの要素がすべて条件を満たす
list.every { 条件 }
ファイルが存在する
new File("パス").exists()
これは書くまでもないか…
ファイルの内容が文字列に一致する
new File("パス").text === """1行目
2行目
3行目
:
"""
""" """
でくくられた部分はGroovyのGStringなので、
${変数名}
の形で変数も入れられる。
注意したいのは、文字列の開始部分。
"""\
とすると次の行から1行目の文字列を書いても
最初の改行は無視されるのだが、
これだとエラーがあった時にSpockがエラーを起こす。
つまり、
new File("パス").text === """\
1行目
2行目
3行目
"""
とも書けるが、テストが失敗した時に
Spockはこの表現を1行に連結して表示しようとするので
"""\1行目2行目3行目"""
のようになってしまい
例外が発生してしまう。(そのうち直るとは思うが)
0 件のコメント:
コメントを投稿