我有一个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
,其他测试成功运行。
我感谢任何帮助。
交互应放在“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
}
希望这可以帮助!