Groovy 无法在spock测试中调用java构造函数

Groovy 无法在spock测试中调用java构造函数,groovy,spock,geb,Groovy,Spock,Geb,我试图从在Spock测试中扩展GebSpec的类中调用java构造函数。 我有一个错误:构造函数是不允许的;相反,请定义“setup”或“setupSpec”方法。 我需要打这样的电话: public class Slider extends GebSpec{ private elem public Slider(selector) { this.elem = page.driver.findElement(By.id(selector)) } class Mytest extends

我试图从在Spock测试中扩展GebSpec的类中调用java构造函数。 我有一个错误:构造函数是不允许的;相反,请定义“setup”或“setupSpec”方法。 我需要打这样的电话:

public class Slider extends GebSpec{
private elem
public Slider(selector) {
    this.elem = page.driver.findElement(By.id(selector))
}

class Mytest extends GebSpec {
    def "try_to_call"() {
        given:
        to SomePage;
        when:
        Slider slider = new Slider("slider");
        then:
         ....some code....
    }
}
Spock文档本身如下所示:

使用此功能前请仔细考虑。改变一下可能更好 规范下的代码设计

全局模拟支持对构造函数进行模拟:

对于您的用例,可能如下-

def someSlider = GroovySpy(Slider, global: true)

1 * new Slider("slider")

滑块不应该扩展GebSpec,因为这样您就可以从测试中实例化并调用测试。让Spock或JUnit来运行测试,好吗?

不要尝试从另一个测试调用测试。这是个坏主意