开始使用 Spock
Spock 是一个用于 Java 和 Groovy 代码的测试框架,您可以使用它来自动化您的测试。 IntelliJ IDEA 支持 完全 集成 Spock 以及 您 可以 通过 第三方 插件 如 Spock Framework 增强、 Spock ADB 等 启用 的 其他 Spock 功能。
创建项目
要了解 Spock framework 的工作原理,请创建一个常规的 Gradle 项目。
为 Spock 创建项目
启动 IntelliJ IDEA。
如果欢迎屏幕打开,请点击 新建项目。
否则,请转到主菜单的 。
从左侧列表中选择 Java。
由于 Spock 用于测试 Java 和 Groovy,您可以保留默认的 Java 选项。 您可以随时将 Groovy 语言添加到您的项目中。

从建议列表中添加并配置以下选项:
名称 :添加您正在创建的项目名称。 例如, spock 教程。
位置 :添加项目位置路径
Git 仓库 :如果您想创建并上传您的项目到 Git,您可以选择此选项。
构建系统 :选择您想在项目中使用的构建工具。 例如 Gradle。
JDK :配置项目 SDK。 若要开发基于 Java 的应用程序,您需要一个 JDK(Java Development Kit)。
如果必要的 JDK 已在 IntelliJ IDEA 中定义,请从检测到的 JDK 列表中选择它。
如果您的计算机上没有必要的 JDK,请选择 下载JDK。 在下一个对话框中,指定 JDK 供应商、版本,并在需要时更改安装路径。
Gradle DSL :请选择适合您项目的 DSL。 由于使用 Spock 时通常会使用 Java 或 Groovy,您可以保留建议的 Gradle 选项。
如果您需要配置任何高级设置,可以在 高级设置 部分进行。
完成所需选项的选择后,点击 创建。
IntelliJ IDEA 创建一个 Gradle 项目,下载必要的依赖项,并建立适当的项目结构。
设置依赖项
在创建一个基本的 Gradle 项目后,您需要将 Spock 依赖项添加到 Gradle 构建文件,而不是添加默认的 JUnit 5 依赖项,以便为 Spock 编写测试。
添加 Spock 依赖
在编辑器中打开
build.gradle文件。在您的 build.gradle 中,按下 Alt+Insert 并选择 添加 Maven 工件依赖。
在打开的对话框中,搜索最新版本的 Spock-core库。
在搜索结果列表中选择所需的项目,然后点击 添加。
已将依赖项添加到
build.gradle文件中。同添加 Spock 依赖一样添加 Groovy 依赖,因为 Spock 测试是用 Groovy 编写的。 使用 3.0.8 版本。
确保两个依赖项都声明为
testImplementation,并删除其他 JUnit 依赖项,因为您不需要它们。您应该在您的
build.gradle文件中看到以下代码:dependencies { testImplementation 'org.codehaus.groovy:groovy-all:3.0.8' testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0' }请将 Groovy plugin 添加到
build.gradle文件中:plugins { id 'java' id 'groovy' }加载您对
build.gradle文件所做的所有更改。 点击编辑器中的 同步 Gradle 更改 图标或按 Ctrl+Shift+O。IntelliJ IDEA 下载任何新的依赖项,删除旧的,并正确配置项目。
编写简单的断言
在开始编写测试之前,请确保您已经在项目中创建了一个 groovy 文件夹,因为您已经创建了一个包含混合 Java 和 Groovy 语言的项目。 您可以将 Groovy 代码保存在 groovy 文件夹中,将 Java 代码保存在其 java 文件夹中。
添加 Groovy 文件夹
在 项目 工具窗口中,右键点击
测试文件夹并选择 。在打开的窗口中,IntelliJ IDEA 在列表中显示了
groovy选项,因为 Groovy 插件被用于 Gradle。
请选择
groovy并按 Enter。IntelliJ IDEA 会将
groovy目录添加到测试模块,之后您就可以开始编写测试。
为 Spock 编写测试
您可以通过编写一个非常简单的测试来启动,以便查看 Spock 测试的外观。
在 项目 工具窗口中,右键点击
groovy文件夹并选择 。在打开的窗口中,通过在类名前键入完整的包名来创建包和目录结构。 Spock 测试经常被称为
Specification,所以您可以称呼该测试为ExampleSpecification。添加 Groovy 类后,在编辑器中打开它。
确保此类扩展 Spock 的 Specification类。

在类中,按 Alt+Insert 并选择 测试方法 以生成 Spock 规范的测试方法。

当您不太熟悉编写 Spock 或 Groovy 代码时,这会特别有用,因为 IntelliJ IDEA 将生成您所需的基本结构。
请检查以下代码:
class ExampleSpecification extends Specification { def "should be a simple assertion"() { } }正如您所见,该方法是使用
def关键字定义的,Spock 的方法名称可以是字符串。 这在您创建测试时很有帮助。 文本格式为您提供了描述期望的确切行为的灵活性。Spock 测试不使用注解或特定的测试方法名称格式来定义哪些方法是测试。 相反,他们使用标签。 对于这种简单的测试,您可以使用
expect并定义您期望看到的最简单的行为。请查看以下示例:
def "should be a simple assertion"() { expect: 1 == 1 }如您所见,Spock 通常不会使用
Assertions或Assert关键字。 相反,您可以使用简单的检查,例如双等号。should be a simple assertion方法指定了一个简单的预期行为——数字 1 应该等于 1。 这不是一个现实的测试用例,但它展示了 Spock 测试的基本原理。首先看到测试失败总是有帮助的,以确保它确实在工作并测试了正确的内容。 当测试失败时,Spock 会显示一条有用的错误消息,准确指出失败的原因和原因。
要查看测试失败,请使用以下代码并 运行您的测试:
def "should be a simple assertion"() { expect: 1 == 0 }请检查 Run 工具窗口中的结果和错误消息。
要了解有关编写 Spock 测试及使用 Groovy 代码的提示,请查阅 Spock 博客文章。
运行 Spock 测试
您可以使用编辑器边栏或主菜单运行已创建的测试。
运行 Spock 测试
在编辑器中,双击
。
或者,您可以按 Shift+F10。
请在 运行 工具窗口中查看结果。
正如您所见,测试通过了。

您可以 更改代码 ,以便测试失败。

默认情况下,IntelliJ IDEA 使用 Gradle 来运行测试,如果这是一个 Gradle 项目。 这意味着 IDE 使用与持续集成或构建环境相同的流程来运行测试。
然而,由于项目中的代码如此简单,Gradle 构建并不会执行生成代码或资源等额外操作。 在这种情况下,使用 IntelliJ IDEA 测试运行程序可能会更快。
更改测试运行器
按 Ctrl+Alt+S 打开设置,然后选择 。
从右侧的选项中,在下拉列表 运行测试使用 中选择 IntelliJ IDEA。
请点击 OK 以保存更改。
现在,当您运行测试时,IntelliJ IDEA 将使用其本地测试运行器。