如何在Spock展开的方法名称中添加文字哈希?

时间:2018-11-06 13:17:09

标签: groovy spock

Spock的数据驱动测试允许将数据插入描述中,如下所示(来自here):

@Unroll
def "maximum of #a and #b is #c"() {
    expect:
    Math.max(a, b) == c

    where:
    a | b || c
    1 | 3 || 3
    7 | 4 || 7
  }
}

礼物:

maximum of 1 and 3 is 3   PASSED
maximum of 7 and 4 is 7   PASSED

但是如何插入文字哈希呢?例如在命名方法时,我喜欢使用标准的哈希前缀:

@Unroll
def "Math#max(#a, #b) is #c"() {
    expect:
    Math.max(a, b) == c

    where:
    a | b || c
    1 | 3 || 3
    7 | 4 || 7
  }
}

但这会导致:

Math#Error:max(1, 3) is 3   PASSED
Math#Error:max(7, 4) is 7   PASSED

我尝试使用'\\'和'#'转义,但似乎都无法正常工作。

1 个答案:

答案 0 :(得分:0)

展开描述使用正则表达式进行解析,并且没有转义功能。

但是您可以采取一种解决方法-在#之后添加另一个字符,以使其与正则表达式不匹配,如下所示:

def "Math#.max(#a, #b) is #c"() { ... }

消息将是

  

Math#.max(1,3)是3
  Math#.max(7,4)是7

用于解析描述的正则表达式为:#([a-zA-Z_$]([\w$.]|\(\))*)。因此,您可以使用.!-等字符。