Gar*_*lon 2 shared initialization spock
有什么区别:
@Shared
MyObject myObject = new MyObject()
Run Code Online (Sandbox Code Playgroud)
和
MyObject myObject
def setupSpec() {
myObject = new MyObjec()
}
Run Code Online (Sandbox Code Playgroud)
为什么要在第二个示例中使用 @Shared 注释?两者都只创建一次,不是吗?
在您的第二个示例中,您可能收到此错误:
错误:(22, 9) Groovyc:从这里只能访问@Shared 和静态字段
因此,您可以选择以下选项之一:
@Shared在一行中使用注释和 init 字段
@Shared
MyObject myObject = new MyObject()
Run Code Online (Sandbox Code Playgroud)
static在一行中使用和初始化字段
static MyObject myObject = new MyObject()
Run Code Online (Sandbox Code Playgroud)
@Shared在setupSpec方法中使用注解和 init 字段
@Shared
MyObject myObject
def setupSpec() {
myObject = new MyObject()
}
Run Code Online (Sandbox Code Playgroud)
static在setupSpec方法中使用和初始化字段
static MyObject myObject
def setupSpec() {
myObject = new MyObject()
}
Run Code Online (Sandbox Code Playgroud)