groovy 所有可能的参数排列使用斯波克的展开

1tuwyuhd  于 2023-10-15  发布在  其他
关注(0)|答案(2)|浏览(110)

我有以下参数用于相同的测试:

a  |  b  |  c
  1  |  2  |  3
 11  | 22  | 33

Spock为类似的测试提供了@Unroll注解(使用这组参数,您可以使用向量[1,2,3]和[11,22,33]运行相同的测试)。
然而,我需要对所有可能的排列(例如[1,2,3],[1,2,33],[11,2,33]等,所有8种组合)运行相同的测试。我怎么才能做到呢?
谢谢你的任何想法!

t98cgbkg

t98cgbkg1#

你需要

where:
[a, b, c] << [[1, 11], [2, 12], [3, 13]].combinations()
bttbmeg0

bttbmeg02#

以下是对cellepo评论的回应:通过提取c数据管道,可以具有与置换相关联的期望。

def "data driven cross-product"() {
    expect:
    Math.max(a, b) == c

    where:
    [a, b] << [[1, 11], [2, 12]].combinations()
    c << [2, 11, 12, 12]
  }

combinations总是以相同的顺序返回排列:

[['a', 'b'],[1, 2, 3]].combinations() == [['a', 1], ['b', 1], ['a', 2], ['b', 2], ['a', 3], ['b', 3]]

但是如果它是许多变量的组合,就很难写了。

相关问题