SpockFramework 测试框架介绍

        在最近1年的测试工作中,一直在用SpockFramework (简称Spock) 测试框架,它是基于Groovy语言来编写测试脚本,可以被集成到Spring中。 如果使用Spock测试框架最好去了解下Groovy,另外建议采用Gradle作为构建工具,gradle自带的测试报告挺不错的,样式简单明了又美观。

现在说说Spock的具体应用:

1,Specification

      在Spock中,由Specification定义待测系统的行为, 所有的Spock测试类都需要继承Specification,某种意义上你可以认为它是Spock测试框架的测试基类。

2,常用的方法(看着很眼熟)

def setup() {}          // run before every feature method

def cleanup() {}        // run after every feature method

def setupSpec() {}    // run before the first feature method

def cleanupSpec() {}  // run after the last feature method

3,Spock特有的特性(或语法)

      每个feature method又被划分为不同的block,不同的block处于测试执行的不同阶段,在测试运行时,各个block按照不同的顺序和规则被执行,如下图:

SpockFramework 测试框架介绍_第1张图片

4,Spock Blocks使用

a) setup ,cleanup很明显分别是测试前预处理和测试后清理

b)when ,then 需要搭配使用,有些类似Sql语句中的case ... when ... then


SpockFramework 测试框架介绍_第2张图片

 c)  expect  此模块可以单独使用,它的语句块可以有多行,但每行必须是boolean表达式

     expect:

           1==1 && "a"=="a"

d) where  个人觉得where语句是spock最吸引人的地方,它能让测试脚本变得优雅简介不重复。

请看例子:


SpockFramework 测试框架介绍_第3张图片

在测试中,一个方法或接口,我们要考虑不同的输入情况,而处理逻辑是一样的,如果用Junit需要写好几个测试方法,而Spock只需要1个。上例中求两个数中最大值,我们只需要将所有的测试用例放在where:语句块中就完事了。

PS:如果有@Unroll注解,在执行case时,上面的例子算3个测试case,

        没有该注解则算1个case

where:语句块还有另外一种写法:接受一个集合list作为输入参数


SpockFramework 测试框架介绍_第4张图片

结束语:Spcok测试框架在数据驱动模式中能极大的提高测试脚本开发效率,如果对Spock测试框架有兴趣,去Git上下载 spock-example  里面demo很详细。

你可能感兴趣的:(SpockFramework 测试框架介绍)