加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy – 最优雅的方式同时获得两个属性

发布时间:2020-12-14 16:23:28 所属栏目:大数据 来源:网络整理
导读:假设您有分层数据并希望获得单独属性的合并值,那么最优雅或最常规的方法是什么? 以下示例包含有关失败和跳过测试的信息.当然,确实有意义的是,这些值是分开的 – 但是对于检索所有测试列表的用例,这些测试没有成功运行,我遇到了两个可能的解决方案,他们都不
假设您有分层数据并希望获得单独属性的合并值,那么最优雅或最常规的方法是什么?

以下示例包含有关失败和跳过测试的信息.当然,确实有意义的是,这些值是分开的 – 但是对于检索所有测试列表的用例,这些测试没有成功运行,我遇到了两个可能的解决方案,他们都不满足我.

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()

解决方法

您可以将初始表达式简化为以下内容:

junitResultList.children.collect { it.failedTests + it.skippedTests }.flatten()

要么

junitResultList.children.collect { [it.failedTests,it.skippedTests] }.flatten()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读