【问题标题】:Can't call java constructor in spock test无法在 spock 测试中调用 java 构造函数
【发布时间】:2017-01-30 13:38:36
【问题描述】:

我正在尝试从扩展 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....
    }
}

【问题讨论】:

    标签: groovy spock geb


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      (在使用此功能之前请三思。更改可能会更好 规范下的代码设计。)

      全局模拟支持模拟构造函数:

      对于您的用例可能会像 -

      def someSlider = GroovySpy(Slider, global: true)
      
      1 * new Slider("slider")
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-29
          • 1970-01-01
          • 1970-01-01
          • 2018-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多