階層的なデータがあり、別のプロパティのマージされた値を取得したい場合、最もエレガントなもの、またはgroovyのように、同時に2つのプロパティを取得する最もエレガントな方法
次の例は、失敗したテストとスキップされたテストに関する情報を保持しています。もちろん、これらの値は分かれていますが、すべてのテストのリストを取得するユースケースでは、正常に実行されなかったため、私は2つの解決策を見つけました。
def junitResultList = [
[
name: "Testsuite A",
children: [
failedTests: ["Test 1", "Test 2"],
skippedTests: []
]
],
[
name: "Testsuite B",
children: [
failedTests: ["CursorTest"],
skippedTests: ["ClickTest", "DragNDropTest"]
]
]
]
具体的には、値を["Test 1", "Test 2", "CursorTest", "ClickTest", "DragNDropTest"]
にします。
最初のアプローチは、拡散テストリストの追加を行うために、単純だった:
(junitResultList*.children*.failedTests +
junitResultList*.children*.skippedTests).flatten()
これは動作しますが、これらのプロパティへのパスを指定すると、二回最もグルーヴィーな方法ではないと思われること私に登場しましたあなただけの、以下のように行うことができます
(junitResultList*.children*.findAll {
['skippedTests', 'failedTests'].contains(it.key)
})*.values().flatten()
この1ライナーは非常に読みやすく、その意図をはっきりと示しています。 – Jazzschmidt