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

Can't call java constructor in spock test

我正在尝试从 class 调用 java 构造函数,它在 Spock 测试中扩展了 GebSpec。 我有这个错误:"Constructors are not allowed; instead, define a 'setup()' or 'setupSpec()' method"。 我需要这样的电话:

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....
    }
}

Mocking Constructor 本身的 Spock 文档显示为 -

(Think twice before using this feature. It might be better to change the design of the code under specification.)

Global mocks support mocking of constructors:

您的用例可能是 -

def someSlider = GroovySpy(Slider, global: true)

1 * new Slider("slider")

Slider 不应该扩展 GebSpec 因为那样你会实例化并从测试中调用测试。让 Spock 或 JUnit 完成 运行 测试,好吗?

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