使用Allure @Issues注解在Groovy/Geb中引发Unexpected token异常
解决Allure @Issues注解在Spock框架中的语法错误问题
这个问题我之前也碰到过,核心是Groovy(Spock基于Groovy)和Java在数组类型注解的语法处理上有差异,导致你写的Java风格注解在Groovy里解析失败。
正确的两种写法
你可以把代码改成下面任意一种形式:
- 用方括号包裹多个
@Issue注解(Groovy推荐的数组初始化方式):
import spock.lang.PendingFeature import ru.yandex.qatools.allure.annotations.Issue import ru.yandex.qatools.allure.annotations.Issues @Issues([@Issue("JEE-3559"), @Issue("JEE-3560")]) @PendingFeature def '24ChildFields' () { when: boolean successful = performChildFields () then: successful == true }
- 如果后续只需要关联单个Issue,也可以直接省略
@Issues,只用@Issue:
@Issue("JEE-3559") @PendingFeature def '24ChildFields' () { // ... 测试代码 }
为什么和其他注解表现不同?
原因在于@Issues是数组参数类型的注解——它接收的参数是Issue[](一组@Issue注解)。Java里允许用花括号{}来初始化数组,但Groovy对这种语法的支持不友好,它更习惯用方括号[]来表示数组或集合。而像@PendingFeature这类无参数或单参数的注解,语法和Java完全兼容,所以不会出现解析错误。
修改后编译器就不会报错,Allure报告也能正常识别关联的所有Issue编号啦。
内容的提问来源于stack exchange,提问作者Pia
相关产品推荐
相关产品推荐

