未能找到 spock.lang.Specification

Failed to find spock.lang.Specification

我正在尝试使用 Geb+Spock 进行 Web 自动化测试,但它一直告诉我:

Caught: java.lang.NoClassDefFoundError: spock/lang/Specification
Caused by: java.lang.ClassNotFoundException: spock.lang.Specification

而且我想我已经添加了 spock 可能需要的东西......?

@Grapes([
    @Grab('org.gebish:geb-core:1.1.1'),
    @Grab('org.seleniumhq.selenium:selenium-chrome-driver:2.42.0'),
    @Grab('org.seleniumhq.selenium:selenium-support:2.42.0'),
    @Grab('org.gebish:geb-spock:1.1.1')
])

import geb.spock.GebSpec
import spock.lang.*

class GoogleSpec extends GebSpec{
    def "Google search"() {
        given:
        to GooglePage

        when:
        searchBox.value == "Dogs"

        and:
        searchButton.click()

        then:
        at ResultPage
    }
}

嗯,也许你还想添加依赖项

  • Spock 本身:
    org.spockframework:spock-core:1.0-groovy-2.4
  • 可选,如果你想在 Spock 中模拟 类(除了接口):
    cglib:cglib-nodep:3.2.4
  • 可选地,如果你觉得在 Spock 中模拟 final 类(请不要,这是邪恶的!)和 类 没有默认构造函数(没关系)的冲动:
    org.objenesis:objenesis:2.2

我对 Gradle 一无所知,但我在 Maven 中使用的那些。

P.S.: 也许下次您想使用您最喜欢的网络搜索引擎先查找示例项目或文档。你应该找到很多。

是的 - 您需要 spock-core 而不是 spock-parent 或其他任何东西。

org.spockframework:spock-core:1.1-groovy-2.4-rc-3