You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Allure @Issues注解在Groovy/Geb中引发Unexpected token异常

解决Allure @Issues注解在Spock框架中的语法错误问题

这个问题我之前也碰到过,核心是Groovy(Spock基于Groovy)和Java在数组类型注解的语法处理上有差异,导致你写的Java风格注解在Groovy里解析失败。

正确的两种写法

你可以把代码改成下面任意一种形式:

  1. 用方括号包裹多个@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
}
  1. 如果后续只需要关联单个Issue,也可以直接省略@Issues,只用@Issue:
@Issue("JEE-3559")
@PendingFeature
def '24ChildFields' () {
    // ... 测试代码
}

为什么和其他注解表现不同?

原因在于@Issues是数组参数类型的注解——它接收的参数是Issue[](一组@Issue注解)。Java里允许用花括号{}来初始化数组,但Groovy对这种语法的支持不友好,它更习惯用方括号[]来表示数组或集合。而像@PendingFeature这类无参数或单参数的注解,语法和Java完全兼容,所以不会出现解析错误。

修改后编译器就不会报错,Allure报告也能正常识别关联的所有Issue编号啦。

内容的提问来源于stack exchange,提问作者Pia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:21:59