【发布时间】:2017-08-21 11:14:12
【问题描述】:
假设您有分层数据,并且想要获得单独属性的合并值,那么最优雅或 groovy 的方法是什么?
以下示例包含有关失败和跳过的测试的信息。当然,将这些值分开是有道理的——但是对于检索所有测试列表的用例,没有成功运行,我遇到了两种可能的解决方案,它们都不满足我的要求。
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()
【问题讨论】:
标签: groovy