Spock单元测试框架介绍及在美团优选的实践_第二章(static静态方法mock方式)

Spock单元测试框架介绍


前言

什么是单元测试,其实单元测试是在我们开发完功能之后,对于业务逻辑用到了第三方的调用,或者对数据库的操作等动作不能够支持的情况下,对业务功能进行以方法为颗粒度进行测试业务逻辑是否与预期的效果数据相等。在很多的一线互联网公司研发人员开发完功能之后都要进行单元测试的,保证行覆盖率、分支覆盖率符合标注之后,才可以上线,以减少线上事故发生。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是Spock单元测试框架?

帮助大家提高开发测试效率。
Spock是什么?和JUnit、jMock有什么区别?
Spock是国外一款优秀的测试框架,基于BDD(行为驱动开发) 思想,功能强大,能够让我们的单元测试代码规范化,结构层次清晰。Spock结合Groovy动态语言的特点以及自身提供的各种标签
种通用、简单、结构化的描述语言,让编写测试代码更加高效和简洁,
官方的介绍如下:https://spockframework.org

二、使用步骤

1.引入maven依赖

    <!-- spock单元测试框架 -->
    <dependency>
      <groupId>org.spockframework</groupId>
      <artifactId>spock-core</artifactId>
      <version>2.0-groovy-3.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy</artifactId>
      <version>2.4.15</version>
    </dependency>

2.创建GoodsService订单业务类进行单测

说明:
UserUtils.getUser()是个静态方法
在这里插入图片描述
在这里插入图片描述

3.创建Groovy.class类

new—>Groovy Class类
在这里插入图片描述

4.创建GoodsServiceSpec.java

创建GoodsServiceSpec类对,queryGoods()方法进行单元测试,命名严格要求:要测的类名+Spec
在这里插入图片描述

说明:
1、创建类之后需要继承extends Specification类
3、mock静态方法(ststic) 需要 setup()函数进行处理,返回需要的值即可。
4、创建测试方法格式如下

/**
 *   灰太狼永远吃不到羊
 */
class ceshiSpec extends Specification{

    def goodsService = new GoodsService()
    /**
     * setup()   函数的意思是在测试类启动加载之前初始化静态资源
     * @return
     */
    def setup() {
        new MockUp<UserUtils>() {
            @Mock
            static User getUser() {
                return new User(login: "小新新")
            }
        }
    }

    def "queryGoods success"() {
        given:"测试mock,UserUtils的getUser()静态方法"
        
        and:"mock方法"

        //when  标签代表要测试方法的入口,只能又一个方法
        when:"测试方法"
        def response = goodsService.queryGoods()

        //then  对结果进行验证
        then:"校验结果"
        response.get(0) == "小新新"
    }
}

实际效果与预期效果一致,表示测试通过。
在这里插入图片描述

实际效果与预期效果不一致,表示测试失败
在这里插入图片描述

5.groowy简单语法

where以标准格式开使提供集合
when调用指定方法函数
then: 故出断高裝达式
expect 期站的行为,shen-then的特点
giveni mock单测中指定mock数信
throwin:如果在when方法中地出现异常,则在这个子句中会捕玩到异常并返回
def setup{}:每个训过运行前的启动方法
der cleanup{}:每个加武运行居的清理万法
def setupSpec{}:每个测试前的启动方法
def cleanupSpec{}:服后一介测试运行后的消理方法

总结

以上就是今天要讲的内容,本文仅仅简单介绍了spock的使用,而spock提供了大量能使我们快速便捷地处理数据的函数和方法,后续我将Spock对于异常、void方法场景经典测试的案例,敬请期待!。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰太狼RD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值