前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Groovy单元测试框架spock基础功能Demo

Groovy单元测试框架spock基础功能Demo

作者头像
FunTester
发布2019-11-14 13:36:34
8690
发布2019-11-14 13:36:34
举报
文章被收录于专栏:FunTester

spock是一款全能型的单元测试框架。

最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock。由于本身使用Groovy的原因,比较钟情于spock框架,但是奈何兼容性比较差,特别是跟Mockito等框架的高级语法的兼容。不过这不妨碍spock是一个非常优秀的单元测试框架,特别体现在用例的形式和测试报告的展示方式以及报错信息的展示(这个我最中意)。

在简单看过官方文档之后做了一些简单的Demo,分享给大家。(官方文档貌似有段时间没有更新了,如果用的话建议升级最新版)

代码语言:javascript
复制
package com.FunTester.spock.pratice
import org.slf4j.Loggerimport spock.lang.Sharedimport spock.lang.Specification
import static com.fun.frame.SourceCode.getLogger
class test01 extends Specification {
    @Shared    int a = 10;
    @Shared    Logger logger = getLogger(this.getClass().getName())
    def setupSpec() {        logger.info "测试类开始! ${logger.getName()}"    }
    def setup() {        logger.info "测试方法开始!"    }
    def "这是一个测试"() {        given: "准备测试数据"        def s = 3        def ss = 3        expect: "验证结果"        s == ss    }
    def "表达式测试,表达式左右运算符号"() {        given: "准备数据"
        expect: "测试方法"        z == x + y
        where: "校验结果"        x | y || z        1 | 0 || 1        2 | 1 || 3    }
    def "表达式测试,表达式左右对象方法"() {        expect:        name.size() == length        where:        name      | length        "Spock"   | 5        "Kirk"    | 4        "Scotty"  | 6        "Sc3otty" | 7    }
    def "表达式测试,表达式左右对象方法,数组表示测试数据"() {        expect:        name.size() == length        where:        name << ["fjdslj", "fds"]        length << [6, 3]    }
    def "校验对象"() {        given:        def per = new Per("fun", 12)        expect:        with(per) {            name == "fun"            age == 12        }    }

    def "when then结构测试"() {        when:        def s = plus(3, 2)        def ss = plus(3, 2)        then:        verifyAll {            s == 3            ss == 3        }    }
/** * 测试方法 * @param i * @param j * @return */    def plus(int i, int j) {        i    }
/** * 测试类 */    class Per {
        Per(String name, int age) {            this.name = name            this.age = age        }
        String name
        int age

    }}

展示一下spock的测试报告:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档