我有一个Spock单元测试(规范),其中定义了3个测试。其中两个测试可以很好地执行,但是其中一个被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
,其他测试成功运行。
感谢您的帮助。
答案 0 :(得分:0)
交互应放置在“ then”块中或“ when”块之前的任何位置。我将您的测试重构为使用“给定”,“何时”和“然后”。然后将交互移动到then块。
作为指导原则,使用when-then描述具有副作用的方法,并期望描述纯功能方法。
Spock Framework Reference Documentation
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
}
希望这会有所帮助!