语句块
expect:的适用场景:
1.用于无初始化的代码,直接验证行为的情况。
2.用于验证初始化的状态

where:
用于参数化测试,共享业务逻辑,只是数据不同。
生命周期:有几行(场景数),测试方法就执行几次。

 

注解
@Subject:凸显哪个类时测试的主题。仅仅用来增强可读性,对运行结果没有影响。
@Title:描述测试类.仅仅用来增强可读性,对运行结果无影响。
@Shared:该对象的生命周期是整个测试类。
由于setupSpec()和cleanupSpec()是为长期存在的对象打造的,因此spock只吃吃在其中访问static字段和标注@Shared注解的对象。
@Unroll: 对where块参数化测试的场景,将每一种case的测试结果展开后再显示,以便清晰地区分出哪个case有问题,一目了然。
原则:只要是包含where的参数化测试方法,就给方法标注Unroll注解。

 

操作符:
1)<<:赋值,参数可以是List,迭代器、enum、string。例如:
pictureFile << ["a.jpg", "b.png", "c.gif"]

2)>>:mock时使用,例如:
Inventory i = Stub(Inventory) {
isAvailable(_,_) >> true
isEmpty() >> false // 调用时返回false
}

3)>>>:mock指定调用顺序的返回值,例如:
Inventory i = Stub(Inventory)
i.isEmpty() >>> [false, true] // 第1次调用返回false,第2次调用返回true

1*obj.method() // obj.method()方法执行了1次


Mock和Stub的区别
mock可以断言方法的执行次数,stub不能。

 

GroovyMock 是 Spock 框架中用于模拟静态方法的工具,但它需要在特定的测试用例上下文中使用,而不能在 @Shared 或 setupSpec(类级别的初始化方法)中调用。
setupSpec 是在所有测试运行之前执行的,属于静态上下文,而 GroovyMock 的行为依赖于测试用例的动态上下文。

posted on 2025-04-22 12:03  卡米i  阅读(3)  评论(0)    收藏  举报