Groovy 扩展spock规范会导致代码错误

Groovy 扩展spock规范会导致代码错误,groovy,spock,geb,Groovy,Spock,Geb,Geb Groovy和spock专家,你能帮我理解为什么下面的代码对我不起作用吗(变量'closr'给出一个空值) 当 这一个对我有用(变量'closr'返回了闭包)。?第二个版本中唯一的区别是我删除了扩展spock规范我不知道您试图用这段代码实现什么,但是spock不能以这种方式使用。Spock规范必须通过JUnit执行,并且必须符合某些规则(例如,测试方法具有类似setup:或expect:)的块)。我不知道您试图用这些代码实现什么,但Spock不能以这种方式使用。Spock规范必须通过JU

Geb Groovy和spock专家,你能帮我理解为什么下面的代码对我不起作用吗(变量'closr'给出一个空值)



这一个对我有用(变量'closr'返回了闭包)。?第二个版本中唯一的区别是我删除了扩展spock规范

我不知道您试图用这段代码实现什么,但是spock不能以这种方式使用。Spock规范必须通过JUnit执行,并且必须符合某些规则(例如,测试方法具有类似
setup:
expect:
)的块)。

我不知道您试图用这些代码实现什么,但Spock不能以这种方式使用。Spock规范必须通过JUnit执行,并且必须符合某些规则(例如,测试方法有块,如
setup:
expect:
)。

我们必须猜测第一个版本的错误吗?我在第一个版本的closr上得到null。编辑这个问题。为什么要扩展规范,然后将其作为普通脚本调用(而不使用任何Spock)?我在代码中使用Spock。因此,我们正在寻找一种使用spock规范的方法。我们必须猜测第一个版本的错误吗?我在第一个版本的closr上得到null。编辑这个问题。为什么要扩展规范,然后将其作为普通脚本调用(而不使用任何Spock)?我在代码中使用Spock。那么,是否正在寻找使用spock规范的方法。spock规范必须通过JUnit执行?这是新的信息。@QVSJ它在@tim_Yates的第三句中说,斯波克使用了Junit runner,它的灵感来自Junit。然而,如果您必须使用spock,则不必导入任何Junit库,并且可以很好地导入spock.lang.specification。我只是想澄清一下,我不是在寻找如何使用spock的更新。在我的代码中,我需要使用spock来编写测试,也就是说,我使用了Given:When:Then:blocks,因此我不得不使用spock规范和import语句。同时,我正在为我发布的问题寻找解决方案(希望将代码与Given:When:Then:blocks一起使用).希望对您有所帮助。端口和类路径是两件不同的事情。在类路径上确实需要JUnit,作为执行Spock的门面。要手动触发执行,可以使用
org.junit.runner.JUnitCore
类。仍然不明白您要解决的问题是什么,代码的意图是什么。Spock规范必须通过JUnit执行吗?这是新的信息。@QVSJ它在@tim_Yates的第三句中说,斯波克使用了Junit runner,它的灵感来自Junit。然而,如果您必须使用spock,则不必导入任何Junit库,并且可以很好地导入spock.lang.specification。我只是想澄清一下,我不是在寻找如何使用spock的更新。在我的代码中,我需要使用spock来编写测试,也就是说,我使用了Given:When:Then:blocks,因此我不得不使用spock规范和import语句。同时,我正在为我发布的问题寻找解决方案(希望将代码与Given:When:Then:blocks一起使用).希望对您有所帮助。端口和类路径是两件不同的事情。在类路径上确实需要JUnit,作为执行Spock的门面。要手动触发执行,可以使用
org.junit.runner.JUnitCore
类。仍然不明白您要解决的问题是什么,以及代码的意图是什么。
import geb.Browser
import spock.lang.Specification

class somclass extends Specification{
def clos = {
    go()

    }
def Browser driveit(Browser browser, Closure script) {
    script.setDelegate(browser)
    script()
    browser
    }
}

objnew = new somclass()
def closr =  objnew.clos
objnew.driveit(new Browser(),closr)
import geb.Browser

class somclass {
def clos = {
    go()

    }
def Browser driveit(Browser browser, Closure script) {
    script.setDelegate(browser)
    script()
    browser
    }
}

objnew = new somclass()
def closr =  objnew.clos
objnew.driveit(new Browser(),closr)