spock 是一个适用于 java 和 groovy的测试框架。由于它灵活,简单,富有表达性的语法使得其在众多测试框架中脱颖而出。
class MyFirstSpecification extends Specification {
//...
}
建议利用 ide 快捷创建
// [given]-when-then
def "testCreateShop"(){
given:
def a=1
when:
def b=createShop()
then:
a == b
true //每一行代表一个条件
}
//expect
def "testSum"(){
expect:
2 == sum(1,1)
}
@Unroll //该注解可以根据给定的数据组数将执行结果展开,如下面给了两组abc的值,可以产生两个运行结果def "testSum"(){
given:
def a = num1 //num1,num2 此时只是占位符,在where中赋值
def b = num2
when:
def c = sum(a,b)
then:
c == a+b
where: // 可以测试多组数据
num1|num2
1 | 1
1 | 2
}
/**
* @author tuzhenxian* @date 2021/4/1
*/
@SpringBootTest
@Rollback
class SpringTest extends Specification{
}
class InboundManagerSpec extends SpringTest {
@SpringBean //将mock对象作为一个springbean
InventoryMapper inventoryMapper = Mock() //Mock的对象,方法返回值默认为null(对象)或默认值(primtive)
...
@Unroll
def "inboundSuccess:新增库存"() {
given:
// 语法说明: _ 代表任意值; >> [] 表示方法返回一个空的列表
// 下面一行代表 mock 方法 batchSelectByWarehouseAndSkuNo 任意输入情况下,返回空列表
inventoryMapper.batchSelectByWarehouseAndSkuNo(_) >> []
...
}
}
//1.创建对象时直接赋予属性值
new Order(orderNo:"ON001",amount:1000)
//2.创建列表
[] //空列表
[new Order(orderNo:"ON001"), new Order(orderNo:"ON002")]//普通列表
def list = new ArrayList()
list<<[new Order(orderNo:"ON001")] //列表赋值
//3.map
[:]//空map
["a":1,"b":2]//map赋值
7.更多特性 请访问官网