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
我尝试使用'\\'和'#'转义,但似乎都无法正常工作。
答案 0 :(得分:0)
展开描述使用正则表达式进行解析,并且没有转义功能。
但是您可以采取一种解决方法-在#
之后添加另一个字符,以使其与正则表达式不匹配,如下所示:
def "Math#.max(#a, #b) is #c"() { ... }
消息将是
Math#.max(1,3)是3
Math#.max(7,4)是7
用于解析描述的正则表达式为:#([a-zA-Z_$]([\w$.]|\(\))*)
。因此,您可以使用.!-
等字符。