Gradle 忽略了我的一个 Spock 单元测试,它没有告诉我为什么



我有一个定义了 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
}

希望这有帮助!

最新更新