我有一个定义了 3 个测试的 Spock 单元测试(规范(。 其中两个测试执行良好,但其中一个被 Spock 或 Gradle 完全忽略,我不知道为什么。
下面是忽略的测试:
def "connect to kinesis"() {
given:
Yaml parser = new Yaml()
YAMLConfig config = parser.load((testConfigFileName as File).text)
putKinesisRecordsUtil.config = config
putKinesisRecordsUtil.putRecords(mockKinesisClient)
1 * mockKinesisClient.putRecords(_)
expect:
1 == 1
}
此测试中是否存在一行,用于确定是否忽略测试:
putKinesisRecordsUtil.config = config
就是这样。 为什么在 putKinesisRecordsUtil 中指定参数会使 Spock 或 Gradle 忽略整个测试而没有警告或错误消息? 我是否正确填充了此值?
测试将扩展spock.lang.Specification
,其他测试将成功运行。
我感谢任何帮助。
交互应放置在"then"块中或"when"块之前的任何位置。 我已经重构了您的测试以使用"给定"、"何时"和"然后"。 然后将交互移动到 then 块。
在哪里放置交互
作为指导原则,使用 when-then 来描述有副作用的方法,并期望描述纯功能方法。
斯波克框架参考文档
def "connect to kinesis"() {
given:
Yaml parser = new Yaml()
when:
YAMLConfig config = parser.load((testConfigFileName as File).text)
putKinesisRecordsUtil.config = config
putKinesisRecordsUtil.putRecords(mockKinesisClient)
then:
1 * mockKinesisClient.putRecords(_)
1 == 1
}
希望这有帮助!