Spock 使用教程(一)之环境搭建

本贴最后更新于 1838 天前,其中的信息可能已经事过景迁

背景:

       最近部门要求提升测试的覆盖率,并推荐使用了 spock 框架,本着提高自己的能力的想法,放弃了 spring-test ,Junit 的测试框架我使用了大佬推荐的 Spock 框架,结果发现只有我选择了这个推荐的框架,不得不说如果单纯是为了工作,spock 的学习成本还是挺高的,整个过程就是一步一个坑,既然选择了就不能放弃,所以写一份教程吧。(有简单模式的时候千万不要去挑战自己的能力)。
       本教程参考的主要资料也是官方文档,spock 是基于 groovy 语言的,我在此之前没有使用过 groovy 语言,虽然有一定的学习成本但是收益还是很可观的。

官方文档链接

教程使用的框架 SpringBoot+Maven

一、准备

1.1、maven 依赖

   <dependency>
 	<groupId>org.spockframework</groupId>
        <artifactId>spock-spring</artifactId>
        <version>1.3-groovy-2.4</version>
        <scope>test</scope>
   </dependency>

       建议使用 1.2 版本以上,因为 1.2 以上的版本才支持将 mock 的对象注入到 springContext 中。

原文如下:
1.2、测试类的创建

屏幕快照 20191024 下午 9.22.05.png
测试样例:

class MathSpec extends Specification {
  def setup() { }
  def "maximum of two numbers"() {
    expect:
    // exercise math method for a few different inputs
    Math.max(1, 3) == 3
    Math.max(7, 4) == 7
    Math.max(0, 0) == 0
  }
}

简单的测试可以,后续继续介绍 spock 的简单的语法。

1.3、基本的构造块

Spock 提供了如下基本构造块:

  • where: 以表格的形式提供测试数据集合
  • when: 触发行为,比如调用指定方法或函数
  • then: 做出断言表达式
  • expect: 期望的行为,when-then 的精简版
  • given: mock 单测中指定 mock 数据
  • thrown: 如果在 when 方法中抛出了异常,则在这个子句中会捕获到异常并返回
  • def setup() {} :每个测试运行前的启动方法
  • def cleanup() {} : 每个测试运行后的清理方法
  • def setupSpec() {} : 第一个测试运行前的启动方法
  • def cleanupSpec() {} : 最后一个测试运行后的清理方法

使用这些基本构造块来编写单测。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...