Gradle忽略了我的一个Spock单元测试,并没有告诉我原因

问题描述 投票:0回答:1

我有一个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,其他测试成功运行。

我感谢任何帮助。

unit-testing gradle groovy spock
1个回答
0
投票

交互应放在“then”块内或“when”块之前的任何位置。我重构了你的测试,使用“给定”,“何时”和“然后”。然后将交互移动到then块。

Where to put interactions

作为指导原则,使用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
}

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.